2

私はいつもjsonpを使ってこのようにしてきました:

$.ajax({
    url         : 'http://domain.local/api/3/authentication/get-token',
    type        : 'POST',
    dataType    : 'jsonp',
    data        : 'username=user&secret=pass',
    success     : function(data) {
        console.log(data);
    }
});

古いjQueryバージョン(1.3、1.4)では完全に動作しますが、最新のものでは動作しないようです(1.5.x以降、奇妙なGETまたはOPTIONリクエストを行います)

それを修正する方法について何か考えはありますか?

ありがとう!

4

1 に答える 1

0

jQueryの新しいバージョンでうまくいきました。問題は、JSONP では許可されていない POST リクエストを使用していることだと思います。

JSONPを使用してPOSTすることはできません...それは単にそのようには機能せず、データを取得するための要素を作成します...これはGETリクエストでなければなりません。他のドメインに投稿するプロキシとして自分のドメインに投稿する以外にできることはあまりありません...しかし、ユーザーはこれを直接実行して応答を見ることはできません。

タイプの使用方法から:jsonp ajax呼び出しで「POST」

呼び出しは次のようになります。

$.ajax({
    url         : 'http://domain.local/api/3/authentication/get-token',
    type        : 'GET',
    dataType    : 'jsonp',
    data        : 'username=user&secret=pass',
    success     : function(data) {
        console.log(data);
    }
});

上記が機能しない場合は、Firebug を使用して送信されたパラメーターを調べてみてください。jQuery は、「jQuery1710013558088336139917_1344030860953」のような値で「callback」パラメーターを送信する必要があります。

また、サーバーからの応答を見てください。サーバーは、次のようなデータを返す必要があります。

jQuery1710013558088336139917_1344030860953({"data":"goes here"})
于 2012-08-03T21:43:42.627 に答える