我在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类型的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吗?
最佳答案
您正在添加?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请求时将为回调函数发送一个名称,该名称将是对传递给$.getJSON
的回调的引用。
关于jquery - 从本地套接字jQuery getJSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5491594/