您好我在尝试做一些非常简单的事情,但由于我对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请求。谁能帮我这个?
答案 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);
});