0

Jqueryajax関数を使用してクロスドメインREST呼び出しを実行するのに多くの問題があります。

コードは次のとおりです。

 $.ajax({
            url: restUrl,
                type: 'GET',
                crossDomain : true,
                dataType: 'jsonp',
                jsonp: false,
                jsonpCallback: 'jsonpCallbackTest',
                error: function(xhr, status, error) {
                    console.log('not OK '+xhr);
                    console.log('not OK '+status);
                    console.log('not OK '+error);
                },
                success: function(jsonp) {
                    alert("success");
                }
            });

これがFirebugコンソールで得られるものです:

OKではありません[オブジェクトオブジェクト]Init.js:872
ではありませんparsererror Init.js:873
ではありませんエラー:jsonpCallbackTestが呼び出されませんでした


私は何が間違っているのですか?

Matejに関して

4

1 に答える 1

4

私は何が間違っているのですか?

あなたがあなたの質問で提供したコード情報から言うのは難しいです。多くの理由が考えられます。たとえば、呼び出そうとしているリモートREST Webサービスは、JSONPではなくJSON応答を返します。

また、関数を定義したようですjsonpCallbackTestが、互換性のない匿名の成功ハンドラーを使用しています。このようにしてみてください:

$.ajax({
    url: restUrl,
    type: 'GET',
    jsonpCallback: 'jsonpCallbackTest',
    error: function(xhr, status, error) {
        console.log('not OK '+xhr);
        console.log('not OK '+status);
        console.log('not OK '+error);
    }
});

次に、jsonpCallbackTest関数を定義します。

function jsonpCallbackTest(jsonp) {
    alert("success");
}

また、JSONPコールバックを指定する方法については、リモートWebサービスのドキュメントを確認する必要があります。クエリ文字列パラメータとして渡すことができるかどうか。

通常、jQueryがランダムなコールバック関数名をWebサービスに渡すようにしておくことをお勧めします。

$.ajax({
    url: restUrl,
    type: 'GET',
    dataType: 'jsonp',
    success: function(json) {
        alert("success");
    },
    error: function(xhr, status, error) {
        console.log('not OK '+xhr);
        console.log('not OK '+status);
        console.log('not OK '+error);
    }
});
于 2012-07-04T07:44:44.610 に答える