2011-05-24 4 views
2

Je voudrais consommer webservice cross-domain du client avec jqueryJQuery appel ajax à webservice cross-domain

function TestService() { 
    $.ajax({ 
     url: "http://service.asmx/GetGeoCompletionList", 
     data: { "prefixText":"eka", "count":"10", "contextKey":"Trace_0$Rus" }, 
     dataType: "jsonp", 
     type: "GET", 
     contentType: "application/json; charset=utf-8", 
     success: function (data) { 
      alert(data); 
     }, 
     error: function (XMLHttpRequest, textStatus, errorThrown) { 
      alert(XMLHttpRequest.statusText); 
     } 
    }); 
} 

Au clapoteuses d'erreur j'ai: textStatus = parseerror

XMLHttpRequest a le statut 200 et readyState 4

errorThrown est jQuery16103495572647140...78197139 was not called

Je l'ai dépensé pendant beaucoup d'heures et je n'ai pas réussi à le faire fonctionner. Pouvez-vous m'aider?

MISE À JOUR

Merci, je change de GET, et corriger ma chaîne de données.

Le service renvoie un objet JSON valide. Je peux le voir sur firebug sur un autre site, qui consomme ce service. Mais ce site devient commun json (puisqu'il a un domaine). Donc, si le web-service renvoie un JSON valide (pas jsonp), je ne peux pas utiliser la même méthode avec jsonp? Que puis-je faire pour consolider le service web json d'un autre domaine?

+0

Qu'est-ce que la requête HTTP et la réponse HTTP ressemblent? – Quentin

+0

duplication possible de [parsererreur après requête jQuery.ajax avec type de contenu jsonp] (http://stackoverflow.com/questions/5359224/parsererror-after-jquery-ajax-request-with-jsonp-content-type) – jvenema

+0

Si vous ne comprends pas pourquoi vous ne pouvez pas consommer le service si elle renvoie simplement JSON au lieu de JSONP, lisez ici: http://stackoverflow.com/questions/2067472/please-explain-jsonp/2067584#2067584 – jvenema

Répondre

2

Résumé des problèmes:

  1. Assurez-vous que vous utilisez JSON valide comme mentionné @Quentin.
  2. Assurez-vous que vous utilisez des requêtes GET, comme @lonesomeday mentionné
  3. Assurez-vous que la réponse du serveur est JSONP, comme seen here
3

Cette chaîne que vous transmettez et que vous revendiquez est JSON n'est pas JSON.

Seuls les caractères " peuvent être utilisés pour citer des chaînes.

De même, vous ne pouvez pas effectuer une requête POST interdomaine JSON-P.

3

Vous ne pouvez pas effectuer de requêtes POST interdomaines à l'aide de JSONP. JSONP fonctionne en ajoutant des balises script à la page. Les balises script récupèrent toujours leur source à l'aide des requêtes HTTP GET. Vous n'obtiendrez aucune donnée publiée.