以下是在Google的協助下找到的解決方案:
在Ajax裡經常會通過innerHTML來改變介面,這個比使用DOM要簡單一些。
比如:
element.innerHTML = "something"
不過,在IE中,有時候會出現"未知的執行階段錯誤(unknown runtime error)",而在firefox裡不會。
這主要是IE在對innerHTML進行寫操作的時候會檢查element是否具備做為這些內容中html對象容器的要求,比如如果你是在一個p裡加入包含的html代碼,這是會出錯的。所以如果你發現這些錯誤出現,嘗試做兩件事情:
1、檢查你嘗試加到innerHTML的html代碼是否包含破損的html標籤,如沒有包圍的
.
2、把你的容器改成那些比較“包容”的標籤,如
,
特別注意的是,
標籤裡面加正確格式的
標籤都有可能出錯,所以應該避免使用這些標籤作為容器,必要時可以用
作為容器,再鍥套一層表格。
我碰到問題就是破損的html標籤導致的[元素未關閉,如:測試]。
引用地址
按照這個方法看了看,發現我並沒有這樣的現象呀。沒辦法可能是我的眼神不太好,沒有發現。用Ajax返回的資料是什麼呢?於是我用jQuery的$("#namelist”).Text
輸出了返回的內容,沒想到Text的內容除了用Response.Write(“”)返回的內容外,還有其他的呀。
My Code如下:
function AddRss() { CreateXML(); xmlhttp.onreadystatechange = StateDo; document.getElementById('namelist').value = "正在載入……"; var rssName = document.getElementById('txtRssName').value; var rssUrl = document.getElementById('txtRssUrl').value; xmlhttp.open("GET", "AddRssNamePage.aspx?name=" + escape(rssName) + "&url=" + escape(rssUrl), true); xmlhttp.send(null);}
AddRssNamePage.aspx
RssManager.AddRss(RssName, RssUrl); Response.Write("Rss添加成功……");
我用xmlhttp.open()訪問的是這個頁面AddRssNamePage.aspx是個web頁面,
所以Response後連帶裡面的等等的就全部都回來了
這樣的結果就是 "Rss添加成功……"
所以再在IE中使用innerHTML時,自然就出現了未知的執行階段錯誤,原因很簡單就是破損的html標籤導致的[元素未關閉]。
怎麼解決呢,兩種方法:1、將AddRssNamePage.aspx頁面上除了這個
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AddRssNamePage.aspx.cs" Inherits="EveryDayStudy.AjaxRssReader.AddRssNamePage" %>以外的內容全部刪除,這樣Response.write就不會有那些HTML的標籤和頁面內容了……
方法2、用Ajax不要訪問web頁面傳回值,可以直接使用“一般處理常式”來訪問資料庫擷取資料。
一般處理常式 就像是類似的,是沒有什麼網頁的標籤的,返回自然也就沒有破損的html標籤啦^
昨天遇到這個問題相當的鬱悶,浪費了1個小時呀.怪我太菜^以後更要加油咯^