将JSON转换为JSONP的必要条件

fer*_*vak 3 jquery json jsonp backbone.js

简单的问题,如果我有这样的静态文件(使用mockJSON web生成JSON)

http://www.webwrx.sk/clients/data.json.txt

我需要用这个文件把它改成JSONP吗?我需要以某种方式修改它吗?文件如api.flickr.com有什么不同?

http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any%20&format=json&jsoncallback=

我甚至在该文件中添加了():

http://www.webwrx.sk/clients/data2.json.txt

仍然下面的代码不会工作:

    var params = _.extend({
        'method': 'GET',
        'url': this.url,
        'cache': true,
        'dataType': 'jsonp',
        processData: true
    }, options);

    return $.ajax(params);
Run Code Online (Sandbox Code Playgroud)

感谢您的任何帮助.

Ama*_*dan 5

JSON和JSONP格式之间的唯一区别是后者中存在函数调用.

JSON:

[ "foo", "bar" ]
Run Code Online (Sandbox Code Playgroud)

JSONP:

callback([ "foo", "bar" ])
Run Code Online (Sandbox Code Playgroud)

确保您callback的代码中定义了该名称(此处为:)的函数,因为它将被调用:

function callback(jsondata) {
  console.log("I got this:", jsondata)
}
Run Code Online (Sandbox Code Playgroud)

jQuery抽象回调命名的东西,所以你可以简单地使用"jsoncallback =?" 在URI中(假设服务器足够灵活,可以根据参数命名函数),并将匿名函数传递给jQuery调用.jQuery会将函数分配给自动生成的随机名称,然后用您的名称替换URI中的问号.但是,如果您正在读取静态文件(它将具有固定的函数名称,因此它无法动态更改为jQuery传递的自动生成的名称),则无法执行此操作.是jQuery(不是我的)的一个工作示例.