Ian*_*ott 21 javascript php xhtml firefox xmlhttprequest
首先,这不是设置页面的理想方式,但是需要将脚本分发为1个文件.
我在一个带有javascript的xhtml文档的顶部有一个php脚本,并且在某些条件下使用XHR将查询字符串发送到页面本身.然后顶部的php激活,并将传递的内容存储为会话,然后自行终止(exit()).XHR是异步的,永远不会检查它是否返回内容.
但是在Firefox 3中,no element found
每次发送XHR请求时,错误控制台都会抛出错误.此外,如果我使用退出程序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); } }, }
Run Code Online (Sandbox Code Playgroud)
而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');
}
Run Code Online (Sandbox Code Playgroud)
我也知道我不应该使用innerHTML,但这是另一个故事
错误就是这个
Error: no element found
Source File: http://localhost/ajax.php?1244648094055
Line: 1
Run Code Online (Sandbox Code Playgroud)
请注意,在我正在使用的php页面上,错误引用了一个永远不会被调用的查询字符串.
Nic*_*itz 25
Firefox期望得到它可以解析为XML的东西,并在获得空响应时抛出XML解析错误.
在PHP调用"exit()"之前,请使用
header('Content-Type: text/plain');
Run Code Online (Sandbox Code Playgroud)
并且Firefox不会尝试将响应解析为XML,并且应该没有错误.
归档时间: |
|
查看次数: |
19856 次 |
最近记录: |