我的顶点团队决定使用Qooxdoo作为我们项目的前端。我们正在使用NOX为OpenFlow控制器开发应用程序,因此我们正在使用NOX Web服务框架。我无法从服务中获取数据;我知道该服务正在运行,因为如果我使用Firefox访问URL,则会显示正确的数据。这是我的代码的相关部分:
var req = new qx.io.remote.Request("http://localhost/ws.v1/hello/world",
"GET", "text/plain");
req.addListener("complete", function(e) {
this.debug(e.getContent());
});
var get = new qx.ui.form.Button("get");
get.addListener("execute", function() {
alert("The button has been pressed");
req.send();
}, this);
form.addButton(get);
在firebug控制台中,我点击警报后收到此消息:
008402 qx.io.remote.Exchange: Unknown status code: 0 (4)
如果我再次按下“获取”按钮,我会收到此错误:
027033 qx.io.remote.transport.XmlHttp[56]: Failed with exception: [Exception... "Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIXMLHttpRequest.open]" nsresult: "0x80070057 (NS_ERROR_ILLEGAL_VALUE)" location: "JS frame :: file:///home/user/qooxdoo-1.0-sdk/framework/source/class/qx/io/remote/transport/XmlHttp.js :: anonymous :: line 279" data: no]
我也查看过Twitter客户端教程,但我设置的“dataChange”事件代替“tweetsChanged”事件从未被解雇过。感谢任何帮助,谢谢。
答案 0 :(得分:4)
这听起来像是跨域请求问题。 qx.io.remote.Request
使用XHR传输数据,这些数据可能因浏览器限制而无法在每种情况下使用。将请求上的crossDomain
标记切换为true
将从XHR更改为动态插入的script
标记,但没有跨域限制(但有其他限制)。
req.setCrossDomain(true);
也许这可以解决你的问题。 此外,您还可以查看远程包的文档以获取有关跨域请求的更多详细信息: http://demo.qooxdoo.org/current/apiviewer/#qx.io.remote
还要注意不要两次使用请求对象。唯一的工作一次。