110 votes

'Pas de transport' Erreur avec l'appel ajax jQuery dans IE

Je dois utiliser l'API foursquare pour rechercher des lieux. Bien sûr, c'est inter-domaine.

Il n’ya aucun problème dans Firefox mais dans Internet Explorer (7, 8, 9 j’ai testé).

Mon code javascript ressemble à:

 searchVenues: function(searchQuery) {
    $.ajax({
       url: 'https://api.foursquare.com/v2/venues/search',
       data: {
            sw: bound_south_west,
            ne: bound_north_east,
            query: searchQuery.query,
            oauth_token: FSQ_OAUTH_TOKEN,
            limit: 25,
            intent: 'browse',
            v: 20120206
       },
       cache: false,
       dataType: 'json',
       success: function(data) {
           displayResults(data, searchQuery.query);
       },
       error: function(xhr, status, errorThrown) {
           console.log(errorThrown+'\n'+status+'\n'+xhr.statusText);
       }
    });
}
 

Dans Firefox, il affiche parfaitement les données reçues. Dans Internet Explorer, il se connecte à la console:

 No Transport
Error
Error
 

Que devrais-je faire?

Merci d'avance.

267voto

Magico Points 1571

J'ai testé cela sur Windows Mobile 7.

Après BEAUCOUP de temps passé à comprendre, j'ai finalement trouvé ceci:

http://bugs.jquery.com/ticket/10660

La solution est simple, il suffit de définir ceci:

 $.support.cors = true;
 

et les demandes inter-domaines Ajax fonctionneront!

13voto

amit thakur Points 67
 jQuery.support.cors = true;
        $.ajax({
            crossDomain: true,
                 url: "",
            type: "POST",
            dataType: "xml",
            data: soapMessage, 
                  });
 

vous devez définir la valeur de domaine croisé sur true

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