火狐错误“未找到元素”
首先,这并不是设置页面的理想方式,但是需要将脚本作为1个文件分发。
我在带有javascript的xhtml文档的顶部有一个php脚本,在某些情况下使用XHR将查询字符串发送到页面本身。然后,顶部的 php 激活,并将传递的内容存储为会话,然后杀死自身(exit())。XHR 是异步的,从不检查它是否返回内容。
然而,在 Firefox 3 中,每次发送 XHR 请求时,错误控制台都会引发一个错误。另外,如果我使用诸如 ,Firefox 会抛出 (Done) 的语法错误,就好像它将其插入到可见的 DOM 中一样。这在Opera中似乎没有发生。no element found
exit('Done')
有没有更好的方法来存储来自已经生成的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页面上,该错误引用了从不调用的查询字符串。