Este error parece que tirar para cualquier cosa que va mal en la función de JavaScript que se llama:¿Por qué WP7 WebBrowser llamada invocación de InvokeScript Error: 80020101?
SystemException was unhandled
An unknown error has occurred. Error: 80020101.
estoy usando el javascript como una interfaz para un motor de aplicación Web, y tengo dos llamadas que están trabajando bien, la carga y volver JSON de una llamada AJAX, que se parecen a esto:
En Silverlight:
MyBrowser.InvokeScript("getData", "/Me/Feed?numberOfResults=-1", "MyFeed");
el Javascript cargado en el WebBrowser
function getData(url, context) {
$.ajax({
url: url,
dataType: 'jsonp',
success: function (result) {
callback(result, context);
}
});
}
Pero más tarde Quiero publicar los datos de vuelta al servidor, y yo estoy haciendo lo mismo:
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);
}
});
}
ahora consigo la excepción.
Lo que es realmente extraño es que puedo llamar inmediatamente la función desde el script y publicarlo en el back-end sin problemas.
postData("sampledata", "PostTest");
Al principio parecía que la única diferencia era que se trataba de un GET y el otro un poste, así que copiaron el Ajax llamada entrar en la segunda llamada (lo que ocurre en la entrada del usuario, donde el primero de ellos ocurrió el carga). El resultado fue el mismo (obtengo el mismo error). Puedo obtener otros comandos para disparar en el javascript de este evento, siempre y cuando no contengan llamadas ajax (aparece). Entonces, podría pensar que es una cuestión de tiempo, así que moví la llamada arriba donde llamé a los otros InvokeScripts que están funcionando, y aún no funciona (la misma excepción).
También traté de llamarlo por un hilo separado, usando Dispatcher.BeginInvoke para una buena medida y sin dados.
Dispatcher.BeginInvoke(() =>
{
MyBrowser.InvokeScript("postData", "thedata", "CreatePost");
});
Estoy completamente desconcertado. Parece que hay cierta consistencia, en el sentido de que si una llamada falla, fallará siempre, pero no puedo decir cuál es la diferencia entre las llamadas que funcionan y las que fallan.
¿Alguien puede decirme qué estoy haciendo mal, o qué es lo que no entiendo sobre el uso de InvokeScript y Ajax juntos?
Gracias!
[EDIT - la adición de esta línea (fue en los comentarios) porque yo estoy haciendo la pregunta mucho]
He trabajado en esto durante 6 horas y esto es lo que estoy viendo:
- hay 2 eventos diferentes desde los que realizo estas llamadas; 1) cuando la carga de la página se ha completado en el control de explorador, 2) cuando un usuario pulsa el botón de mi "post"
- el error no se produce cuando la llamada Ajax es un GET desde el evento de carga
- se produce el error cuando se llama a la misma llamada GET desde el evento de usuario
- el error también oCURRE cuando se llama a la llamada Ajax usando la POST del evento de carga
- el error no se produce cuando se llama a una función que no realice ningún Ajax por parte del usuario evento
¿Hace esto con una XMLHTTPRequest natural? – mattsven
¿La página está completamente cargada cuando llama a InvokeScript? ¿Podría ser que la función $ .ajax aún no está cargada? –
Hola, NeXXeuS: no estoy seguro de entender lo que estás sugiriendo. ¿Quiere decir que debería intentar eliminar el uso de Javascript como interfaz de la aplicación web y acceder a él directamente? Principalmente, mi equipo no quería reescribir todas sus cosas solo para este cliente, y la otra cosa es que este enfoque proporciona la autenticación de Facebook existente y evita todos los problemas de Silverlight entre dominios – Subcreation