0

Jquery モバイル アプリケーション (Amazon S3 でホストされている) から "http://paraimpu.crs4.it/data/new" への http POST リクエストを作成して、Parimpu サイトのセンサーにデータを挿入しようとしています。これは私が行っている要求です:

        data = "Test";
        valueToSend = '{"token":"c9d1cee6-da40-4e97-afc8-209045786b04","content-type":"application/json","data":' + data + '}';
        $.ajax({
            url: "http://paraimpu.crs4.it/data/new",
            type: "POST",
            data: valueToSend,
            dataType: "json",
            crossDomain: true,
            contentType:"application/json",
            success: function(){
            alert('Success');
        }
        });

私は得続けます

XMLHttpRequest はhttp://paraimpu.crs4.it/data/newを読み込めません。オリジン「http://webappz.s3-website-us-east-1.amazonaws.com」は Access-Control-Allow-Origin で許可されていません。

これはクロス ドメイン ポリシーが原因であることはわかっていますが、どうすればこれを回避できますか? paraimpu ページの説明はかなり曖昧で、次のように書かれています。

HTTP POST を実行する新しいセンサー データを次の場所にプッシュします。

http://paraimpu.crs4.it/data/new

次のようなコンテンツ: {"token":"c9d1cee6-da40-4e97-afc8-209045786b04", "content-type":"text/plain", "data":RAW DATA}

4

1 に答える 1

0
data = "Test";
valueToSend = '{"token":"c9d1cee6-da40-4e97-afc8-209045786b04","content-type":"application/json","data":' + data + '}';
    $.ajax({
        url: "http://paraimpu.crs4.it/data/new",
        type: "POST",
        data: valueToSend,
        dataType: "jsonp",    //set datatype to jsonp
        crossDomain: true,
        jsonp: false,
        contentType:"application/json",
        success: function(){
            alert('Success');
        }
    });​

これらはあなたが欠けていた部分です:

dataType: "jsonp": サーバーから返されると予想されるデータのタイプ。「jsonp」は、JSONP を使用して JSON ブロックにロードします。「?callback=?」を追加します。URL の末尾に追加して、コールバックを指定します。キャッシュ オプションが true に設定されていない限り、クエリ文字列パラメーター "_=[TIMESTAMP]" を URL に追加してキャッシュを無効にします。

jsonp: false: jsonp 要求でコールバック関数名をオーバーライドします。この値は、「callback=?」で「callback」の代わりに使用されます。URL のクエリ文字列の一部。したがって、 {jsonp:'onJSONPLoad'} は 'onJSONPLoad=?' になります。サーバーに渡されます。jQuery 1.5 の時点で、jsonp オプションを false に設定すると、jQuery が「?callback」文字列を URL に追加したり、「=?」を使用しようとしたりするのを防ぐことができます。変身のために。この場合、jsonpCallback 設定も明示的に設定する必要があります。たとえば、{ jsonp: false, jsonpCallback: "callbackName" }

詳細はこちら: jQuery.ajax()

于 2012-10-08T04:10:57.423 に答える