php - example - Error de Firefox ''no se encontró ningún elemento''
xmlhttprequest json (2)
En primer lugar, esta no es exactamente la forma ideal de configurar una página, sin embargo, hay una necesidad de distribuir un script como 1 archivo.
Tengo un script php en la parte superior de un documento xhtml con javascript y bajo ciertas condiciones uso XHR para enviar una cadena de consulta a la página. El php en la parte superior se activa y almacena el contenido pasado como una sesión, y luego se mata a sí mismo (exit ()). El XHR es asíncrono y nunca se verifica para ver si devuelve contenido.
Sin embargo, en Firefox 3, la consola de error arroja un error, no element found
cada vez que se envía la solicitud de XHR. Además, si uso una salida como exit(''Done'')
, Firefox arroja un error de sintaxis de (Listo) como si lo insertara en el DOM visible. Esto no parece suceder en Opera.
¿Hay una mejor manera de almacenar una sesión desde una página xhtml ya generada? Obviamente, podría XHR a otra página, pero preferiría mantener todo en un solo script. ¿Firefox trata las solicitudes de XHR a sí mismo como actualizaciones del DOM? No sé por qué está enviando este error.
Actualización Como dije, Firefox solo lanza el error cuando se realiza la solicitud de XHR. La página es XHTML válida y funciona perfectamente, sin error a menos que la solicitud XHR se realice en la página misma.
Me preguntaba por qué estaba enviando el error porque realmente no devuelve nada.
Aquí hay un fragmento de JavaScript que hace una solicitud de AJAX de un objeto. Crea un objeto XHR, sin una función de devolución de llamada, y publica la información. Funciona correctamente cuando no se hace referencia a la misma página.
var saveState = { saveContent: function(updateActiveMenu) {
var sendState = new ajaxObject(gV.url);
if (!updateActiveMenu) {
var storageContainer = document.getElementById("StorageContainer").innerHTML;
var menu = document.getElementById("Nav").innerHTML;
sendState.update("Containerstring="+urlencode(storageContainer)+"&Nav="+urlencode(menu)+"&Active="+gV.activeMenuItem, ''POST'', true); } }, }
Y el php hace esto
if (isset($_REQUEST[''Containerstring'']) && isset($_REQUEST[''Nav'']) && isset($_REQUEST[''Active''])) {
$_SESSION[''Containerarray''] = (saveContainer(regulateEscapes(urldecode($_REQUEST[''Containerstring'']))));
$_SESSION[''Navarray''] = (saveNav(regulateEscapes(urldecode($_REQUEST[''Nav'']))));
$_SESSION[''Active''] = $_REQUEST[''Active''];
exit(''Done'');
}
También sé que no debería usar innerHTML, pero esa es otra historia
El error es esto
Error: no element found
Source File: http://localhost/ajax.php?1244648094055
Line: 1
Tenga en cuenta que el error, mientras estoy en la página php que estoy usando, hace referencia a una cadena de consulta que nunca se llama.
Debería hacer que su respuesta php sea una respuesta HTTP válida, porque Firefox intentará leerla aunque no haga nada con ella. Así que devuelve al menos un encabezado válido
header("HTTP/1.0 200");
exit();
Firefox espera obtener algo que pueda analizar como XML y lanzar un error de análisis XML cuando recibe una respuesta vacía.
Antes de que su PHP llame a "exit ()", use
header(''Content-Type: text/plain'');
y Firefox no intentará analizar la respuesta como XML, y no debería haber ningún error.