Hola amigos.
No logro dar con la solución. El caso es que uso ajax para enviar datos por POST y esos datos los leo de los campos de texto (input text y textarea) con identificadores.
El caso es que el código funciona bien con un parámetro. Si le intento pasar varios y hacer un split no lo logra. Os explico con código fuente:
Esos son los dos campos que necesito enviar.
La función la lanzo así:
Código Javascript
:
Ver originalfunction capt(e){
var tcl = (document.all)?e.keyCode:e.which;
if (tcl==13){
cargarContenidoPOST("pagina.php?accion=enviarMsg", "textoEscrito", "contenedorChat");
}
}
Y funciona de perlas con el segundo parámetro con valor "textoEscrito" que es el textarea.
Ahora el código fuente de la función ajax:
Código Javascript
:
Ver originalfunction cargarContenidoPOST(pagina, parametros, contenedor){
contenedor = document.getElementById(contenedor);
envio = "";
valor = document.getElementById(parametros).value;
envio += parametros+"="+valor+"&";
ajax=nuevoAjax();
ajax.open('POST', pagina, true);
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
contenedor.innerHTML = ajax.responseText
}
}
ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
ajax.send(envio);
}
Y funciona de perlas.
Ahora viene el problema. Quiero enviar también el hidden con lo que hice esto:
Código Javascript
:
Ver originalfunction capt(e){
var tcl = (document.all)?e.keyCode:e.which;
if (tcl==13){
cargarContenidoPOST("chat.php?accion=enviarMsg", "textoEscrito|idConexion", "contenedorChat");
}
}
Y modifico la función así:
Código Javascript
:
Ver originalfunction cargarContenidoPOST(pagina, parametros, contenedor){
contenedor = document.getElementById(contenedor);
envio = "";
parametros.split("|");
for(i in parametros) {
valor = document.getElementById(parametros[i]).value;
envio += parametros[i]+"="+valor+"&";
}
ajax=nuevoAjax();
ajax.open('POST', pagina, true);
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
contenedor.innerHTML = ajax.responseText
}
}
ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
ajax.send(envio);
}
Y no va, no funciona! La consola de errores de firefox me dice que document.getElementById(parametros[i]) es nulo. ¿Cómo si funciona de uno, no funciona de dos?
Es un tema que me tiene muy mosca. Haciendo debug después de hacer split() a parametros me crea el array perfectamente.
Y otra cosa, que probé a cambiar el
for(i in parametros) por
for(i=0; i<parametros.length; i++) y tampoco va!
agradezco cualquier ayuda.
Desde ya, muchas gracias!