繁体   English   中英

Firefox错误'找不到元素'

[英]Firefox error 'no element found'

首先,这不是设置页面的理想方式,但是需要将脚本分发为1个文件。

我在一个带有javascript的xhtml文档的顶部有一个php脚本,并且在某些条件下使用XHR将查询字符串发送到页面本身。 然后顶部的php激活,并将传递的内容存储为会话,然后自行终止(exit())。 XHR是异步的,永远不会检查它是否返回内容。

但是在Firefox 3中,错误控制台抛出错误,每次发送XHR请求时都no element found 此外,如果我使用exit('Done')例如exit('Done') ,Firefox会抛出(完成)语法错误,就像将其插入可见DOM一样。 这似乎不会发生在Opera中。

有没有更好的方法来存储已经生成的xhtml页面的会话? 显然我可以XHR到另一个页面,但我更愿意将它全部保存在一个脚本上。 Firefox是否将XHR请求视为对DOM的更新? 我不知道它为什么发送这个错误。


更新正如我所说,firefox只在发出XHR请求时才会出错。 该页面是有效的XHTML并且完美无缺,除非对页面本身发出XHR请求。

我想知道它为什么发送错误,因为它确实没有返回任何东西。

这是一个从对象发出ajax请求的javascript片段。 它创建一个XHR对象,没有回调函数,并发布信息。 不引用同一页面时,它可以正常工作。

 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);    } }, }

而php就是这样做的

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'); 
}

我也知道我不应该使用innerHTML,但这是另一个故事


错误就是这个

Error: no element found
Source File: http://localhost/ajax.php?1244648094055 
Line: 1

请注意,在我正在使用的php页面上,错误引用了一个永远不会被调用的查询字符串。

Firefox期望得到它可以解析为XML的东西,并在获得空响应时抛出XML解析错误。

在PHP调用“exit()”之前,请使用

header('Content-Type: text/plain');

并且Firefox不会尝试将响应解析为XML,并且应该没有错误。

你应该让你的php返回一个有效的HTTP响应,因为即使你没有对它做任何事情,Firefox也会尝试读取它。 所以至少返回一个有效的标题

header("HTTP/1.0 200");
exit();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM