如何将JSON转换为JSONP

3
简单问题,如果我有像这样的静态文件(使用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);

感谢任何帮助。

1个回答

5
JSON和JSONP格式的唯一区别在于后者存在函数调用。
JSON:
[ "foo", "bar" ]

JSONP:

callback([ "foo", "bar" ])

确保你在代码中定义了这个名称对应的函数(这里是callback),因为它将被调用:

function callback(jsondata) {
  console.log("I got this:", jsondata)
}

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接