papulo |
30-11-2007 13:12:00 |
AJAX+PHP+Forms
Estoy intentando pasar el contenido de un form(post) a un <div> usando AJAX y me falla, jops.
Por un lado el formulario test.php
Código PHP:
<?php require_once("config.php"); //Archivo de configuración de paths y archivos. ?> <html> <head> <script type="text/javascript" src="<?php echo javascript_path(); ?>"></script> <script type="text/javascript" src="<?php echo javascript2_path(); //es la ruta al archivo xmlhttp_pro.js donde tengo las funciones javascript ?>"></script> </head> <body> <form action="formaction.php" method="post" id="Prueba" name="Prueba" > <input id="testdata" name="testdata" type="text" value="<?php echo "HOLA MUNDO"; ?>" /> <input type="button" value="Enviar" onclick="submitform(document.getElementById('Prueba'),'formaction.php','testid'); return false;" /> </form> <div id="testid"></div> </body> </html>
Por el otro formaction.php
Código PHP:
<div> <?php echo $_POST[testdata];?>MAMAAAAAL </div>
Y por último, pero no menos importante, xmlhttp_pro.js
Código PHP:
//xmlhttp_pro.js //Function to create an XMLHttp Object. function getxmlhttp (){ //Create a boolean variable to check for a valid microsoft active X instance. var xmlhttp = false; //Check if we are using internet explorer. try { //If the javascript version is greater than 5. xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { //If not, then use the older active x object. try { //If we are using internet explorer. xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { //Else we must be using a non-internet explorer browser. xmlhttp = false; } } //If we are using a non-internet explorer browser, create a javascript instance of the object. if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { xmlhttp = new XMLHttpRequest(); } return xmlhttp; }
var aok; //Funciones para enviar un formulario. function getformvalues (fobj, valfunc){ var str = ""; aok = true; var val; //Recorrer la lista de todos los objetos que contiene el formulario. for(var i = 0; i < fobj.elements.length; i++){ if(valfunc) { if (aok == true){ val = valfunc (fobj.elements[i].value,fobj.elements[i].name); if (val == false){ aok = false; } } } str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value) + "&"; } //Devolver los valores de la cadena return str; } function submitform (theform, serverPage, objID, valfunc){ var file = serverPage; var str = getformvalues(theform,valfunc); //Si la validación es correcta. if (aok == true){ obj = document.getElementById(objID); processajax (serverPage, obj, "post", str); } }
//Function to process an XMLHttpRequest. function processajax (serverPage, obj, getOrPost, str){ //Get an XMLHttpRequest object for use. xmlhttp = getxmlhttp (); if (getOrPost == "get"){ xmlhttp.open("GET", serverPage); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { document.getElementById(obj).innerHTML = xmlhttp.responseText; } } xmlhttp.send(null); } else { xmlhttp.open("POST", serverPage, true); xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8"); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { document.getElementById(obj).innerHTML = xmlhttp.responseText; } } xmlhttp.send(str); } }
El caso es que al ejecutarlo me da un error en la linea 86 de xmlhttp_pro.js que dice lo siguiente:
document.getElementById(obj).innerHTML = xmlhttp.responseText;y ya no tengo ni idea de que es lo que falla.
¿Será el navegador o algún error que no veo?
Ando desquiciado con eso.
Saludos gente.
|