這個錯誤似乎拋出任何出錯的JavaScript函數被調用:爲什麼WP7 WebBrowser InvokeScript調用拋出錯誤:80020101?
SystemException was unhandled
An unknown error has occurred. Error: 80020101.
我使用的JavaScript作爲一個web應用程序後端的接口,我正在工作的兩個電話細,裝,從一個Ajax調用,看起來像這樣的返回JSON:
在Silverlight:
MyBrowser.InvokeScript("getData", "/Me/Feed?numberOfResults=-1", "MyFeed");
的JavaScript加載到web瀏覽器
function getData(url, context) {
$.ajax({
url: url,
dataType: 'jsonp',
success: function (result) {
callback(result, context);
}
});
}
但後來我想張貼數據傳回服務器,我做同樣的事情:
MyBrowser.InvokeScript("postData", "thedata", "CreatePost");
function postData(payload, context) {
$.ajax({
type: "POST",
url: "/Post/Create?" + tz(),
data: payload,
dataType:"json",
success:function (result) {
callback(result, context);
}
});
}
現在我得到的異常。
真奇怪的是,我可以立即從腳本內調用該函數,並將其發佈到後端就好了。
postData("sampledata", "PostTest");
起初它似乎是唯一的區別在於一個是GET,另一個是POST,所以我複製的GET AJAX調用到第二個呼叫(這發生在用戶輸入,其中,第一個發生在加載)。結果是一樣的(我得到相同的錯誤)。只要它不包含Ajax調用(它會出現),我可以從此事件獲取其他命令以在JavaScript中觸發。所以你可能會認爲這是一個計時的事情 - 所以我把上面的調用移到了我稱之爲正在工作的其他InvokeScripts的地方,但它仍然不起作用(同樣的例外)。
我也試着在一個單獨的線程上調用它,使用Dispatcher.BeginInvoke進行測量並且沒有骰子。
Dispatcher.BeginInvoke(() =>
{
MyBrowser.InvokeScript("postData", "thedata", "CreatePost");
});
我完全感到困惑。看起來似乎有一定的一致性,因爲如果一次呼叫失敗,它每次都會失敗,但是我不能分辨出工作的呼叫和失敗的呼叫之間有什麼區別。
任何人都可以告訴我我做錯了什麼,或者我不明白關於使用InvokeScript和Ajax?
謝謝!
[編輯 - 添加此內嵌(在評論),因爲我得到這個問題很多]
我已經在此工作了6小時,這是我所看到的:
- 有2個不同的事件,我正在進行這些調用; 1)當瀏覽器控件上的頁面加載完成時,2)當用戶點擊我的「發佈」按鈕
- 當Ajax調用是來自加載事件的GET時,錯誤不會發生
- 錯誤會發生從調用用戶事件相同的GET呼叫時
- 調用使用POST從負載事件Ajax調用時,錯誤也會確實發生
- 調用不從用戶試圖在所有Ajax功能時,不會發生錯誤事件
它是否使用自然XMLHTTPRequest執行此操作? – mattsven 2011-03-25 04:02:13
調用InvokeScript時頁面是否完全加載?可能是$ .ajax函數尚未加載? – 2011-03-25 04:45:11
嗨,NeXXeuS - 我不確定我明白你在暗示什麼。你的意思是我應該嘗試使用JavaScript作爲Web應用程序的界面並直接訪問它?主要的原因是,我的團隊不想僅僅爲這個客戶端重寫所有的東西,另一件事是這種方法提供了現有的Facebook身份驗證功能,並避免了所有跨域Silverlight問題 – Subcreation 2011-03-25 12:13:55