0

私はjQueryの使用に慣れており、これにはうまく機能します:

$.ajax({
    method: "GET",
    url: "someURL",
    dataType: "jsonp",
    jsonp: 'jsonp',
    success: function (msg) {},
    error: function (msg) {}
});

** 注: jsonp: 'jsonp'を省略した場合、次のエラーがコンソールに表示されました。

Uncaught SyntaxError: Unexpected token : 

Mootools のドキュメントを読んだ後に試したこと:

試み:

new Request.JSONP({
    url: "someURL",
    onComplete: function (msg) {},
    onFailure: function (msg) {}
}).get();

エラー:

Uncaught TypeError: undefined is not a function 

Response.JSONP が関数ではないことを表示しています。JSON を使用しようとすると:

試み:

new Request.JSON({
    url: "someURL",
    onComplete: function (msg) {},
    onFailure: function (msg) {}
}).get();

エラー:

XMLHttpRequest cannot load http://www.theirsite.com. Origin http://yoursite.com is not allowed by Access-Control-Allow-Origin.

これは、Ajax を使用したクロスドメイン アクセスの問題です。そのため、JSONP を使用しています。

私は非常に混乱しています

Uncaught TypeError: undefined is not a function 

エラーです。jQuery で動作する理由がわかりません。

どんな洞察も高く評価されます

4

2 に答える 2

4

次のオプション$.ajaxは、コールバック関数名を次のように設定しますjsonp

jsonp: 'jsonp'

callbackKey同様の方法でオプションを指定する必要があると思います。

new Request.JSONP({
    url: "someURL",
    onComplete: function (msg) {},
    onFailure: function (msg) {},
    callbackKey: 'jsonp'
}).get();
于 2013-03-17T22:06:49.433 に答える
3

Mootoolsの場合、JSONPはコアライブラリに組み込まれていません。使用できるようにするには、MoreBuilderを使用してJSONPを別のjavascriptファイルにビルドする必要があります。

Request.JSONPお気づきかもしれませんが、 mootoolsを使用した呼び出しの構文は、を使用した呼び出しと同じですRequest.JSON。また、リモートリスナーがcallbackパラメーターをリッスンし、それを出力に追加することを確認します。

例えば

index.php

new Request.JSONP({
    url: 'http://absolute/url/to/endpoint.php',
    onSuccess: function(result) {
        console.log(result);    // should output 'bar' to the console
    }
}).get({
    foo: 'bar'
});

endpoint.php

echo $_REQUEST['callback'] . '(' . $_REQUEST['foo'] . ');';
于 2013-03-17T22:10:23.117 に答える