来自本地套接字的jquery getJSON

时间:2011-03-30 19:58:08

标签: jquery sockets getjson

我遇到了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?

1 个答案:

答案 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的回调的引用。