我正在学习Qooxdoo框架,我正在尝试使用一个小的Django Web服务。 Django webservice只返回这样的JSON数据:
{ "name": "Football", "description": "The most popular sport." }
然后我使用以下代码查询该url:
var req = new qx.io.remote.Request(url, "GET", "application/json");
req.toggleCrossDomain();
req.addListener("completed", function(e) {
alert(e.getContent());
});
req.send();
不幸的是,当我执行代码时,我得到意外的令牌错误,然后请求超时。
Uncaught SyntaxError: Unexpected token :
Native.js:91013011 qx.io.remote.RequestQueue[246]: Timeout: transport 248
Native.js:91013011 qx.io.remote.RequestQueue[246]: 5036ms > 5000ms
Native.js:91013013 qx.io.remote.Exchange[248]: Timeout: implementation 249
JSLint报告这是一个有效的JSON,所以我想知道为什么Qooxdoo没有正确解析它。
答案 0 :(得分:5)
问题可能在于这一行:
req.toggleCrossDomain();
默认情况下,crossDomain为false,因此toggleCrossDomain将其设置为true。这迫使qx.io.remote.Request使用脚本传输,它不像普通的XMLHttpRequest那样工作:请求需要包含一个id,而服务器的响应必须使用相同的id并在调用中包装实际的响应到qx.io.remote.transport.Script._requestFinished()。这在qx.io.remote包的文档中有更详细的解释:
答案 1 :(得分:0)
您的请求已超时。网址是对的吗?是否有连接到它的防火墙问题?基本上,您的代码没有收到您期望的JSON,而是收到超时错误。