Эта ошибка, по-видимому, возникает для всего, что идет не так в вызываемой функции javascript:
SystemException was unhandled
An unknown error has occurred. Error: 80020101.
Я использую javascript в качестве интерфейса к бэкенду веб-приложения, и у меня есть два вызовакоторые работают нормально, загружая и возвращая JSON из вызова ajax, который выглядит следующим образом:
В Silverlight:
MyBrowser.InvokeScript("getData", "/Me/Feed?numberOfResults=-1", "MyFeed");
Javascript, загруженный в WebBrowser
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 во второй вызов (который происходит при вводе пользователем, когда первый произошел при загрузке).Результат был таким же (я получаю ту же ошибку).Я могу получить другие команды для запуска в javascript из этого события, если они не содержат ajax-вызовы (кажется).Таким образом, вы можете подумать, что это проблема времени - поэтому я переместил вызов выше, где я вызываю другие InvokeScripts, которые работают, и он все еще не работает (то же исключение).
Я также попытался вызватьэто в отдельном потоке, используя Dispatcher.BeginInvoke для хорошей меры и без костей.
Dispatcher.BeginInvoke(() =>
{
MyBrowser.InvokeScript("postData", "thedata", "CreatePost");
});
Я полностью сбит с толку.Кажется, что есть некоторая последовательность в том, что если вызов не выполняется, он будет каждый раз прерываться, но я не могу сказать, в чем разница между вызовами, которые работают, и теми, которые не выполняются.
Может кто-нибудь сказатьмне, что я делаю неправильно, или что я не понимаю в совместном использовании InvokeScript и Ajax ??
Спасибо!
[РЕДАКТИРОВАТЬ - добавить этот встроенный (был в комментариях)потому что я часто получаю вопрос]
Я работал над этим в течение 6 часов, и вот что я вижу:
- есть 2 разных события, из которых яя делаю эти звонки;1) когда загрузка страницы завершена на элементе управления браузера, 2) когда пользователь нажимает мою кнопку «post»
- , ошибка НЕ возникает, когда вызов Ajax является GET из события загрузки
- ошибка возникает при вызове того же вызова GET из пользовательского события
- ошибка также происходит при вызове вызова Ajax с использованием POST из события загрузки
- ошибка НЕ возникает, когдавызов функции, которая не пытается выполнить Ajax из пользовательского события