Tengo el siguiente servicio web;
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
Es un stock estándar sin alteraciones a 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 tarde necesito publicar datos en ella.
Cuando ejecuto jQuery, aparece el error "Sin transporte".
Una cosa que también debo 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 de la página HTML, es simplemente una página web y no un proyecto ac # ni nada.
¿Alguien puede señalarme en la dirección correcta aquí?
jquery
ajax
web-services
quejas
fuente
fuente
Respuestas:
Si su página jQuery no se está cargando,
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 consultar JSONP como solución. Aquí hay algunos enlaces que pueden ayudarlo a comenzar:
fuente
Agrega esto:
jQuery.support.cors = true;
Permite secuencias de comandos entre sitios en jQuery (introducido después de 1.4x, creo).
Estábamos usando una versión muy antigua de jQuery (1.3.2) y la cambiamos por 1.6.1. Todo funcionaba, excepto las llamadas .ajax (). Agregar la línea anterior solucionó el problema.
fuente
Tuve el mismo error en una página y agregué estas líneas:
y finalmente funciona para mí;) no más errores en IE9.
fuente
Ninguna de las respuestas propuestas funcionó completamente para mí. Mi caso de uso es ligeramente diferente (hacer que un ajax llegue a un archivo S3 .json en IE9). La configuración
jQuery.support.cors = true;
eliminó elNo Transport
error, pero aún recibíaPermission denied
errores.Lo que funcionó para mí fue usar jQuery-ajaxTransport-XDomainRequest para forzar a IE9 a usar XDomainRequest. Para usar esto no fue necesario configurar
jQuery.support.cors = true;
fuente
lo resuelvo usando dataType = 'jsonp' en el lugar de dataType = 'json'
fuente
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 el iframe, los publicamos en el servicio web. Por lo tanto, se elimina la referencia entre dominios.
Agregamos una verificación de origen bidireccional para confirmar que solo los datos de publicaciones autorizadas de la página hacia y desde el iframe.
Espero eso ayude
fuente
Para mí es una historia completamente diferente.
Como esta página tiene una buena clasificación en los motores de búsqueda, debo agregar mi caso y la solución aquí también.
Me construí
jquery
conwebpack
recogiendo sólo los módulos que uso. El ajax siempre falla con el mensaje "Sin transporte" como la única pista.Después de una larga depuración, el problema resulta ser
XMLHttpRequest
conectablejquery
y no incluye por defecto.Debe incluir explícitamente el
jquery/src/ajax/xhr
archivo para que el ajax funcione en los navegadores.fuente
Lo resolví simplemente eliminando el dominio de la url de solicitud.
fuente