問題描述
首先,這并不是設(shè)置頁面的理想方式,但是需要將腳本作為 1 個(gè)文件分發(fā).
First off, this isn't exactly the ideal way of setting up a page, however there's a need to distribute a script as 1 file.
我在帶有 javascript 的其他 xhtml 文檔的頂部有一個(gè) php 腳本,并且在某些條件下使用 XHR 將查詢字符串發(fā)送到頁面本身.然后頂部的 php 激活,并將傳遞的內(nèi)容存儲(chǔ)為會(huì)話,然后自行終止(exit()).XHR 是異步的,從不檢查它是否返回內(nèi)容.
I have a php script at the top of an otherwise xhtml document with javascript, and under certain conditions use XHR to send a query string to the page itself. The php at the top then activates, and stores the passed content as a session, and then kills itself (exit()). The XHR is async and is never checked to see if it returns content.
但是在 Firefox 3 中,每次發(fā)送 XHR 請求時(shí),錯(cuò)誤控制臺(tái)都會(huì)拋出錯(cuò)誤 no element found
.此外,如果我使用諸如 exit('Done')
之類的出口,F(xiàn)irefox 會(huì)拋出 (Done) 的語法錯(cuò)誤,就像將其插入可見 DOM 一樣.這在 Opera 中似乎不會(huì)發(fā)生.
However in Firefox 3, the error console throws an error no element found
every time the XHR request gets sent. Also, if I use an exit such as exit('Done')
, Firefox throws a syntax error of (Done) as if it inserts it into the visible DOM. This doesn't seem to happen in Opera.
是否有更好的方法來存儲(chǔ)來自已生成的 xhtml 頁面的會(huì)話?顯然我可以 XHR 到另一個(gè)頁面,但我更愿意將所有內(nèi)容都保存在一個(gè)腳本中.Firefox 是否將 XHR 對 self 的請求視為對 DOM 的更新?我不知道為什么它會(huì)發(fā)送此錯(cuò)誤.
Is there a better way to store a session from an already generated xhtml page? Obviously I could XHR to another page, but I would prefer to keep it all on one script. Does Firefox treat XHR requests to self as updates to the DOM? I don't know why it's sending this error.
更新 正如我所說,firefox 僅在發(fā)出 XHR 請求時(shí)才會(huì)顯示錯(cuò)誤.該頁面是有效的 XHTML 并且可以完美運(yùn)行,除非向頁面本身發(fā)出 XHR 請求,否則不會(huì)出錯(cuò).
Update As I said, firefox only thows the error when the XHR request is made. The page is valid XHTML and works perfectly, without error unless the XHR request is made to the page itself.
我想知道為什么它會(huì)發(fā)送錯(cuò)誤,因?yàn)樗娴臎]有返回任何東西.
I was wondering why it was sending the error because it really doesn't return anything.
這是一個(gè)從對象發(fā)出 ajax 請求的 javascript 片段.它創(chuàng)建一個(gè) XHR 對象,沒有回調(diào)函數(shù),并發(fā)布信息.當(dāng)不引用同一頁面時(shí),它可以正常工作.
Here's a javascript snippet that makes a ajax request from an object. It creates a XHR object, without a callback function, and posts the information. It works properly when not referencing the same page.
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');
}
我也知道我不應(yīng)該使用innerHTML,但那是另一回事
I'm also aware I shouldn't be using innerHTML but that's another story
錯(cuò)誤是這樣的
Error: no element found
Source File: http://localhost/ajax.php?1244648094055
Line: 1
請注意,該錯(cuò)誤在我使用的 php 頁面上引用了一個(gè)從未調(diào)用過的查詢字符串.
Note that the error, while on the php page I'm using, references a query string that is never called.
推薦答案
Firefox 希望得到一些它可以解析為 XML 的東西,并在得到空響應(yīng)時(shí)拋出 XML 解析錯(cuò)誤.
Firefox is expecting to get something it can parse as XML back, and throwing an XML parsing error when it gets an empty response.
在 PHP 調(diào)用exit()"之前,使用
Before your PHP calls "exit()", use
header('Content-Type: text/plain');
并且 Firefox 不會(huì)嘗試將響應(yīng)解析為 XML,并且應(yīng)該沒有錯(cuò)誤.
and Firefox will not try to parse the response as XML, and there should be no error.
這篇關(guān)于Firefox 錯(cuò)誤“未找到元素"的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!