5

这是我的代码

$.ajax({
    type: "GET",
    url: "http://example.com?keyword=r&callback=jsonp",
    success: function (data) {
        alert(data);
    },
    dataType: "jsonp",
    error: function (xhr, errorType, exception) {
        var errorMessage = exception || xhr.statusText;
        alert("Excep:: " + exception + "Status:: " + xhr.statusText);
    }
});

好的,所以上面的代码工作正常,我得到一个 jsonp 的数据。现在我不知道如何将 jsonp 转换为 json。

4

4 回答 4

4

本文可能会给您一些额外的指导:Basic example of using .ajax() with JSONP?

您能否提供一个请求返回的数据结构的示例?

在您的特定情况下,您可能可以执行类似于以下的操作。让我知道结果如何:

// Create the function the JSON data will be passed to.
function myfunc(json) {
  alert(json);
}

$.ajax({
  type: "GET",
  url: "http://example.com?keyword=r&callback=jsonp",
  dataType: 'jsonp',
  jsonpCallback: 'myfunc', // the function to call
  jsonp: 'callback', // name of the var specifying the callback in the request
  error: function (xhr, errorType, exception) {
    var errorMessage = exception || xhr.statusText;
    alert("Excep:: " + exception + "Status:: " + xhr.statusText);
  }
});
于 2013-01-10T20:27:45.587 回答
2

现在我不知道如何将 jsonp 转换为 json。

那是没有意义的。您想要的是一个可以使用的普通 javascript 对象,并且您已经拥有它 ( data)。


JSONP是一个脚本文件,其中使用对象文字调用函数。文字看起来像JSON,而函数(其名称是动态生成的)是padding

JSON是一个文件/字符串,其中包含JavaScript Object Notation中的数据,这是一种常见的序列化格式。

于 2013-01-10T22:03:34.893 回答
0

如果您收到来自 的警报alert(data),则它已经被转换。你应该得到[object Object]which 应该告诉你你有一个 JavaScript 对象。现在您可以像访问任何其他 JavaScript 对象一样访问它的属性。

alert(data.foo);

它也可能是一个数组,具体取决于返回的 json。

于 2013-01-10T20:23:21.900 回答
0

你需要一个功能:

function jsonp(data){
    // do stuff with data here
}

返回数据时自动调用该函数/

于 2013-01-10T20:23:36.967 回答