Bueno he empezado (ayer empecé) a aprender a utilizar ajax, mi primer código intenta permitir que un título se convierta en un campo de texto y un botón de guardar que modifique el título y lo vuelva a mostrar como antes pero con el nuevo texto.
A continuación pongo el código completo. Tener en cuenta que estoy utilizando XAJAX.
Código HTML:
<?
session_start();
require_once("xajax/xajax.inc.php");
$xajax = new xajax();
$xajax -> registerFunction("guardarTit");
function guardarTit(){
$_SESSION['titulo']=$_GET['tit'];
$objResponse = new xajaxResponse();
$objResponse -> addAssign("cabecera", "innerHTML", "<h3 id='tit' onclick='xajax_mostrarForm()'>".$_SESSION['titulo']."</h3>");
return $objResponse->getXML();
}
$xajax -> processRequests();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin título</title>
<script>
function cambiarTit(){
var formTit = document.createElement("form");
formTit.setAttribute('id','formTit');
var input = document.createElement("input");
input.setAttribute('type','text');
input.setAttribute('id','titulo');
input.setAttribute('name','tit');
input.setAttribute('value', document.getElementById("tit").firstChild.nodeValue);
var input2 = document.createElement("input");
input2.setAttribute('type','submit');
input2.setAttribute('id','guardar');
input2.setAttribute('value', 'Guardar');
input2.setAttribute('onclick', 'xajax_guardarTit(xajax.getFormValues("formTit"))');
formTit.appendChild(input);
formTit.appendChild(input2);
document.getElementById("cabecera").replaceChild(formTit, document.getElementById("tit"));
}
</script>
<?php $xajax -> printJavascript("/Pruebas/xajax/");?>
</head>
<body>
<div id="cabecera">
<h3 id="tit" onclick="cambiarTit()">Título</h3>
</div>
</body>
</html>
Al parecer todo esta bien hasta que le das a guardar. Efectivamente se recibe el nuevo título y se le asigna a la sesión pero cuando tiene que cambiar el formulario por el nuevo texto sucede algo muy raro:
Se pone el título correctamente y luego (al cabo de medio segundo) vuelve al estado inicial, es decir, vuelve a poner "Título".
La verdad es que no tengo ni idea de qué puede estar pasando y levo todo el día en este "simple" ejemplo.
Espero que podais ayudarme! Estoy demasiado perdido...
Saludos,