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:
Código HTML:
Ver original
Esos son los dos campos que necesito enviar.
La función la lanzo así:
Código Javascript:
Ver original
function 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 original
function 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 original
function 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 original
function 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!