2011-09-25 21 views
6

Sto utilizzando $ .ajax di jQuery per effettuare una richiesta a un server di terze parti, utilizzando JSONP. Ho specificare il metodo POST, ma utilizza GET comunque:jQuery: ottieni JSON tramite ajax, ma con POST anziché GET

$.ajax({ 
     type: "POST", 
     dataType: "json", 
     url: other_server + "/run?callback=?", 
     data: { 
      code: $(code).val() 
     }, 
     success: function(obj) { 
      var res = obj.results; 
      $(results).val(res); 
     } 
    }); 

Guardando nella sorgente di jQuery, vedo queste due righe che sembrano forzare tutte le richieste tra domini da ottenere, ma non capisco il motivo per cui ha bisogno di essere così:

if (s.crossDomain) { 
    s.type = "GET"; 

E 'possibile fare questo con un post al posto di un GET? Perché jQuery impone l'uso di GET?

risposta

5

JSON-P funziona inserendo un elemento <script> nel documento, quindi può solo effettuare richieste GET.

Se si desidera effettuare una richiesta POST a un server remoto, è necessario invece esaminare XHR e impostare le autorizzazioni CORS. Si noti che questo ha limited browser support.

In alternativa, mantenere le richieste sulla stessa origine (e fare in modo che il server effettui la richiesta al server remoto).

+0

+1 per suggerimento proxy server. –

+0

Grazie, ha perfettamente senso! –

Problemi correlati