163 votes

jQuery appel au WebService retourne erreur « No Transport »

J'ai le service web suivant;

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

Il est stock standard avec pas de modifications à la classe des décorateurs.

J'ai cette méthode 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);
          }
});

C'est une action post parce que plus tard, j'ai besoin d'afficher des données.

Quand j'execute le jQuery, je reçois un "Sans transport" retour d'erreur.

Une chose que je dois aussi mentionner que l'jQuery sont stockées dans un simple fichier HTML sur ma machine et le Service web est en cours d'exécution sur ma machine aussi.

Il n'y a pas de code sur la page HTML c'est tout simplement une page web et non pas un projet c# ou quoi que ce soit.

Quelqu'un peut-il svp me pointer dans la bonne direction?

258voto

SrBlanco Points 1941

Ajouter ceci :``

Il permet les scripts intersites dans jQuery (mis en place après 1,4 x, je crois).

Nous utilisaient une très vieille version de jQuery (1.3.2) et essayez-le troqué contre 1.6.1. Tout fonctionnait, à l’exception des appels de .ajax(). Ajout de la ligne ci-dessus résolu le problème.

95voto

no.good.at.coding Points 13542

Si votre jQuery, la page n'est pas chargée à partir d' http://localhost:54473 puis, ce problème est probablement parce que vous êtes à essayer de faire de la croix-demande de domaine.

Mise à jour 1 Jetez un oeil à ce blog.

Mise à jour 2 Si c'est effectivement le problème (et je soupçonne que c'est), vous pourriez vouloir vérifier JSONP comme une solution. Voici quelques liens qui pourraient vous aider à démarrer:

26voto

bsuttor Points 390

J’ai eu la même erreur sur une page, et j’ai ajouté ces lignes :

et enfin ça ne marche pour moi  ;) aucune erreur plus pour IE9

7voto

rynop Points 7818

Aucune des réponses proposées complètement fonctionné pour moi. Mon cas est légèrement différent (faire un ajax d'arriver à un S3 .fichier json dans IE9). Paramètre jQuery.support.cors = true; débarrassé de l' No Transport d'erreur, mais j'étais encore en train de Permission denied d'erreurs.

Ce qui a fonctionné pour moi a été d'utiliser le jQuery-ajaxTransport-XDomainRequest à force IE9 utiliser XDomainRequest. En utilisant cela ne nécessite pas la mise en jQuery.support.cors = true;

6voto

Abhishek Points 78

J’ai le résoudre en utilisant le type de données = « jsonp » au lieu de dataType = « json »

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X