2011-09-25 9 views
6

jQueryの$ .ajaxを使用して、JSONPを使用してサードパーティのサーバーにリクエストします。私は、POSTのような方法を指定しますが、それはとにかくGET使用しています:私は取得するために、すべてのクロスドメインリクエストを強制するように見えるこの2行を参照して、jQueryのソースに探しjQuery:ajax経由でJSONを取得しますが、GETの代わりにPOSTを使用します。

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

を、私は理由を理解していませんそれはそうである必要があります:

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

これはGETの代わりにPOSTで行うことはできますか?なぜjQueryはGETの使用を強制しますか?

答えて

5

JSON-Pは、<script>要素をドキュメントに挿入することによって動作します。したがって、GET要求のみを行うことができます。

リモートサーバーにPOSTリクエストを送信する場合は、代わりにXHRを参照して、CORS権限を設定する必要があります。これはlimited browser supportです。

また、リクエストを同じオリジンにしておき、サーバーがリモートサーバーにリクエストを送信させるようにしてください。

+0

+1サーバープロキシの提案です。 –

+0

ありがとう、それは理にかなっています! –

関連する問題