jQuery Call to WebService devuelve el error “Sin transporte”

Tengo el siguiente servicio web;

[WebMethod] public string HelloWorld() { return "Hello World"; } 

Es un estándar estándar sin alteraciones para los decoradores de la 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 posterior porque más adelante necesito publicar datos en ella.

Cuando ejecuto jQuery, aparece un error “Sin transporte”.

Una cosa que también debería mencionar es que jQuery está almacenado en un simple archivo HTML en mi máquina y el WebService también se está ejecutando en mi máquina.

No hay código detrás en la página HTML, simplemente es una página web y no es un proyecto de código ni nada.

¿Puede alguien señalarme en la dirección correcta aquí?

Si su página jQuery no se carga desde 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 desee comprobar JSONP como una solución. Aquí hay algunos enlaces que pueden ayudarlo a comenzar:

Agregue esto: jQuery.support.cors = true;

Permite scripts en sitios cruzados en jQuery (introducido después de 1.4x, creo).

Estábamos usando una versión realmente antigua de jQuery (1.3.2) y la cambiamos por 1.6.1. Todo estaba funcionando, excepto .ajax () llamadas. Agregar la línea anterior solucionó el problema.

Tuve el mismo error en una página, y agregué estas líneas:

  

y finalmente funciona para mí;) no hay más errores en IE9.

Ninguna de las respuestas propuestas funcionó por completo para mí. Mi caso de uso es ligeramente diferente (hacer un ajax para obtener un archivo S3 .json en IE9). Estableciendo jQuery.support.cors = true; eliminó el error No Transport pero aún recibía errores de Permission denied .

Lo que sí funcionó para mí fue utilizar jQuery-ajaxTransport-XDomainRequest para obligar a IE9 a usar XDomainRequest. Al usar esto no fue necesario configurar jQuery.support.cors = true;

Lo resuelvo utilizando dataType = ‘jsonp’ en el lugar de dataType = ‘json’

Yo también tuve este problema y todas las soluciones dadas anteriormente fallaron o no fueron aplicables debido a las restricciones del servicio web del cliente.

Para esto, agregué un iframe en mi página que residía en el servidor del cliente. Entonces, cuando publicamos nuestros datos en el iframe y en el iframe, lo publicamos en el servicio web. Por lo tanto, se elimina la referencia entre dominios.

Agregamos una verificación de origen de 2 vías para confirmar solo los datos de las publicaciones de página autorizadas desde y hacia el iframe.

Espero eso ayude

  //send data to iframe var hiddenFrame = document.getElementById('receiver').contentWindow; hiddenFrame.postMessage(JSON.stringify(message), 'https://client-server-url'); //The iframe receives the data using the code: window.onload = function () { var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent"; var eventer = window[eventMethod]; var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message"; eventer(messageEvent, function (e) { var origin = e.origin; //if origin not in pre-defined list, break and return var messageFromParent = JSON.parse(e.data); var json = messageFromParent.data; //send json to web service using AJAX //return the response back to source e.source.postMessage(JSON.stringify(aJAXResponse), e.origin); }, false); } 

Lo resolví simplemente eliminando el dominio de la url de solicitud.

 Before: https://some.domain.com/_vti_bin/service.svc After: /_vti_bin/service.svc