首先,这不是设置页面的理想方式,但是需要将脚本分配为1个文件。Firefox错误'找不到元素'
我有一个PHP脚本在JavaScript的其他xhtml文档的顶部,并在某些情况下使用XHR发送查询字符串到页面本身。然后,顶部的php会激活,并将传递的内容存储为会话,然后终止本身(exit())。 XHR是异步的,从不检查它是否返回内容。
但是,在Firefox 3中,每次发送XHR请求时,错误控制台都会引发错误no element found
。另外,如果我使用诸如exit('Done')
之类的出口,Firefox会抛出(完成)的语法错误,就好像它将其插入可见DOM中一样。这在Opera中似乎不会发生。
有没有更好的方法来存储已经生成的xhtml页面的会话?很明显,我可以将XHR添加到另一个页面,但我宁愿将它全部保留在一个脚本中。 Firefox是否将XHR请求视为DOM的更新?我不知道为什么它发送这个错误。
更新正如我所说的,Firefox中的XHR请求时仅thows错误。该页面是有效的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
请注意,错误,而在p我正在使用的hp页面引用了一个永远不会被调用的查询字符串。
您所描述的内容存在一些不一致之处。如果xhr从不使用返回值(即'完成'),那么它不能将其插入到DOM中,现在可以吗? – SilentGhost 2009-06-10 14:32:55
甚至更好的发布你的代码的一个小例子。 – SilentGhost 2009-06-10 14:34:44
为什么不把页面源代码的相关部分向上? – 2009-06-10 14:44:36