使用jQuery和JSONP从不同服务器上的文本文件中检索数据

时间:2011-01-27 12:38:11

标签: jquery jsonp getjson

您好我在尝试做一些非常简单的事情,但由于我对JSONP很陌生,我正在努力解决它。我想要做的就是从不同域中的文本文件中检索一些JSON(因此我需要使用JSONP来解决跨域问题)。我使用以下代码:

$.ajax({
        type: "GET",
        dataType: 'jsonp',
        url: "http://www.topshop.com/aboutus/show.txt",
        success: returnedMessage
});

function returnedMessage(data) {
    console.log(data.message);
}

我知道JSONP将JSON作为函数返回,但我不知道如何将生成的json对象打印到控制台。我很确定它可以完成虽然我可以在Firebug的NET选项卡中看到它将JSON作为响应返回。在Firebug控制台中,我收到一条无效的标签消息,我认为这是因为我没有以正确的方式处理JSONP请求。谁能帮我这个?

2 个答案:

答案 0 :(得分:2)

您的JSONP格式不正确。该文件包含JSON数据,而不是JSONP数据。您收到的错误消息是因为浏览器尝试将对象作为代码运行。您需要围绕JSON数据进行函数调用:

callback({
  "message": "This is coming from staging."
});

由于文本文件无法使用带有发送给它的函数名的查询字符串,因此必须使用jsonpCallback属性指定函数名称:

$.ajax({
  type: "GET",
  dataType: 'jsonp',
  jsonpCallback: 'callback',
  url: "http://www.topshop.com/aboutus/show.txt",
  success: returnedMessage
});

答案 1 :(得分:0)

这应该有效:

$.getJSON('http://www.topshop.com/aboutus/show.txt?callback=?', function(data) {
  console.log(data);
});