jQuery Call to WebService devuelve el error "Sin transporte"
Tengo el siguiente servicio web;
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
Es estándar de serie sin modificaciones en los decoradores de clase.
Tengo este método jQuery;
var webMethod = "http://localhost:54473/Service1.asmx/HelloWorld";
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
data: "{}",
dataType: "json",
url: webMethod,
success: function(msg){ alert(msg.d); },
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
Es una acción de publicación porque más adelante necesito publicarle datos.
Cuando ejecuto jQuery, aparece el error "Sin transporte".
Una cosa que también debo mencionar es que jQuery está almacenado en un archivo HTML simple en mi máquina y el servicio web también se ejecuta en mi máquina.
No hay ningún código detrás de la página HTML, es simplemente una página web y no un proyecto # ni nada por el estilo.
¿Alguien puede indicarme la dirección correcta aquí?
Agrega esto:jQuery.support.cors = true;
Permite secuencias de comandos entre sitios en jQuery (creo que se introdujo después de 1.4x).
Estábamos usando una versión muy antigua de jQuery (1.3.2) y la cambiamos por la 1.6.1. Todo estaba funcionando, excepto las llamadas .ajax(). Agregar la línea anterior solucionó el problema.
Si su página jQuery no se carga, http://localhost:54473
entonces este problema probablemente se deba a que está intentando realizar una solicitud entre dominios.
Actualización 1 Eche un vistazo a esta publicación de blog .
Actualización 2 Si este es realmente el problema (y sospecho que lo es), es posible que desees consultar JSONP como solución. Aquí hay algunos enlaces que pueden ayudarlo a comenzar:
- https://en.wikipedia.org/wiki/JSON
- http://remysharp.com/2007/10/08/what-is-jsonp/
- http://www.west-wind.com/weblog/posts/107136.aspx