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