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 没有内置到核心库中。您必须使用 More Builder 将 JSONP 构建到另一个 javascript 文件中才能使用。

您可能已经意识到,Request.JSONP使用 mootools 调用的语法与使用Request.JSON. 此外,确保远程侦听器侦听callback参数,并将其附加到输出。

例如

索引.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'
});

端点.php

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