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.