我遇到了json.getJSON方法的问题。这是我目前的代码:
var jqxhr = $.getJSON("http://127.0.0.1:5002?callback=?", function() {
alert("success");
})
.success(function() { alert("second success"); })
.error(function() { alert("error"); })
.complete(function() { alert("complete"); });
它几乎与jquery文档中的示例完全相同。但是,我从未点击过回调函数(alert(“success”))。我总是收到错误警报。通过我正在使用的URL上的空回调,我可以在FireBug中看到成功的JSON GET方法,FireBug可以完美呈现JSON。如果没有该URL中的回调,我在Firebug中看不到JSON。但是,当我直接用firefox命中http://127.0.0.1:5002时,JSON看起来很好。
这是JSON:
{"AllData":[{"dataName":"TestData","data":[0,0,0],"color":"Green"}]}
我已尝试使用MIME类型application / json,application / javascript,application / x-json,application / x-javascript,text / javascript和text / plain但在URL上进行回调和不回调,但无法接收来自.getJSON的“成功”警报。
这个JSON使用jquery.parseJSON解析得很好,当我使用.getJSON并从.js文件中提取JSON时,它甚至可以正常工作。
有什么建议吗?是否可以从具有.getJSON的套接字读取JSON?
答案 0 :(得分:1)
您正在添加?callback=?
,将其转换为JSONP请求。回显JSON时,需要将其包装在传递给服务器的回调函数中。
所以,而不是只输出JSON:
{"AllData":[{"dataName":"TestData","data":[0,0,0],"color":"Green"}]}
您需要输出JSONP:
cFunc({"AllData":[{"dataName":"TestData","data":[0,0,0],"color":"Green"}]});
将cFunc
替换为callback
GET参数(例如,PHP中为$_GET['callback']
)的值。当jQuery执行XHR请求时,jQuery将为回调函数发送一个名称,该名称将是对传递给$.getJSON
的回调的引用。