Sub*_*ion 9 javascript ajax silverlight jquery windows-phone-7
这个错误似乎抛出了调用的javascript函数中出现的任何错误:
SystemException was unhandled
An unknown error has occurred. Error: 80020101.
Run Code Online (Sandbox Code Playgroud)
我使用javascript作为web-app后端的接口,我有两个调用工作正常,从ajax调用加载和返回JSON,如下所示:
在Silverlight中:
MyBrowser.InvokeScript("getData", "/Me/Feed?numberOfResults=-1", "MyFeed");
Run Code Online (Sandbox Code Playgroud)
Javascript加载到WebBrowser中
function getData(url, context) {
$.ajax({
url: url,
dataType: 'jsonp',
success: function (result) {
callback(result, context);
}
});
}
Run Code Online (Sandbox Code Playgroud)
但后来我想将数据发回服务器,我也在做同样的事情:
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);
}
});
}
Run Code Online (Sandbox Code Playgroud)
现在我得到了例外.
真正奇怪的是,我可以立即从脚本中调用该函数,并将其发布到后端就好了.
postData("sampledata", "PostTest");
Run Code Online (Sandbox Code Playgroud)
起初,似乎唯一的区别是一个是GET而另一个是POST,所以我将GET ajax调用复制到第二个调用(这发生在用户输入,第一个发生在加载时).结果是一样的(我得到了同样的错误).只要它们不包含ajax调用(它出现),我就可以从这个事件的javascript中获取其他命令.所以你可能会认为这是一个时间问题 - 所以我把调用移到了上面我调用其他正在工作的InvokeScripts的地方,它仍然不起作用(同样的例外).
我也试过在一个单独的线程上调用它,使用Dispatcher.BeginInvoke进行测量,没有骰子.
Dispatcher.BeginInvoke(() =>
{
MyBrowser.InvokeScript("postData", "thedata", "CreatePost");
});
Run Code Online (Sandbox Code Playgroud)
我完全不知所措.似乎有一些一致性,因为如果呼叫失败,它每次都会失败,但我不知道有效的呼叫和失败的呼叫之间有什么区别.
任何人都可以告诉我我做错了什么,或者我不明白一起使用InvokeScript和Ajax?
谢谢!
[编辑 - 添加此内联(在评论中)因为我得到了很多问题]
我已经为此工作了6个小时,这就是我所看到的:
80020101如果无法找到javascript方法或JS抛出错误,您将收到错误.
在找到方法方面,控件将完全匹配签名.这不是标准的javascript行为,所以要小心这一点.
小心在浏览器控件中缓存页面(及其内容),因为这会吸引很多人.:(