2012-10-23 4 views
2

J'ai le code jQuery suivant:demande jQuery.ajax POST converti GET

$.ajax({ 
     url: Url, 
     dataType: 'JSONP', 
     type: 'POST', 
     success: function (data, textStatus, jqXHR) { 
      //callback function here 
     }, 
     error: function (xhr, ajaxOptions, thrownError) { 
      //report error 
     } 
    }); 

Cependant, quand je l'ai vue cette demande AJAX dans Fiddler, ma demande a été converti d'un POST à un GET.

Ceci n'est pas autorisé avec l'API à laquelle je me connecte, car il doit s'agir d'une demande POST.

Pourquoi cela se produit-il?

+0

Si l'API à laquelle vous vous connectez nécessite POST, alors elle n'utilise pas JSON-P. S'il utilise 'JSON-P', alors il ne nécessite pas' POST'. (Peut-être confondez-vous 'JSON', un format pour l'échange de données, et' JSON-P', un mécanisme pour contourner la politique de même origine?) –

Répondre

8

Les demandes JSONP ne peuvent être que des requêtes GET.

Enlever dataType: 'JSONP'.

+0

Oh oui, merci! Acceptera quand je peux. Comment puis-je faire XSS sans 'JSONP'? :/ – Curt

+0

@Curt: Vous pouvez utiliser [CORS] (http://www.w3.org/TR/access-control/) avec [navigateurs modernes] (http://caniuse.com/#feat=cors), si le serveur auquel vous vous connectez vous le permet. Le support d'IE8 et 9 pour CORS est présent, mais cassé, nécessitant des solutions de contournement (celles que jQuery ne fait pas pour vous). IE10 le soutiendra correctement. –

1
dataType: 'JSONP', 

est toujours GET demande