jquery - 从本地套接字jQuery getJSON

标签 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类型的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/

相关文章:

javascript - 使用 JQuery 从 HTML 表中提取数据

javascript - socket.io 每秒发出一次

javascript - $.getJSON() 到 $.ajax()

javascript - 如何向 API 发出 jquery http post 请求?

javascript - 为什么将 .getJSON 中的名称声明为列表中的索引后仍未定义(JavaScript/JQuery)

javascript - jQuery UI 可拖动 : Mouse moves faster than draggable div

javascript - 颜色选择器值不与 aurelia 绑定(bind)

jquery - 下面的jQuery怎么写好一点? (衰退)

linux - 以 QT 方式使用 linux 套接字?

ios - 如何在 Charles Proxy 中查看 Web 套接字请求