Firefox错误'找不到元素'

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

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

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

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


更新正如我所说的,firefox只会在XHR请求发生时抛出错误。 该页面是有效的XHTML,并且完美地工作,除非XHR请求是针对页面本身,否则不会出现错误。

我想知道为什么它发送错误,因为它确实不会返回任何内容。

这里有一个JavaScript代码片段,它可以从一个对象发出一个ajax请求。 它创建一个没有回调函数的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();
链接地址: http://www.djcxy.com/p/79787.html

上一篇: Firefox error 'no element found'

下一篇: What to do when the FireFoxOS marketplace does not update