当我向我的webApp发送AJAX查询时,当服务器返回带标题的响应时,Qooxdoo无法正确解释响应:
Content-Type: application/json; charset=utf-8
以下是示例代码:
var req = new qx.io.remote.Request("http://localhost:8080/bm/login.json","POST","application/json"); req.setFormField('login',this.loginInput.getValue()); req.setFormField('password',this.passwordInput.getValue()); req.addListener("completed", function(response){ var result = response.getContent(); alert(result); // expected: object alert(result.status); // expected: 200 }, this); req.send();
在这种情况下,alert(result)返回null(应该是对象)。
Qooxdoo应用和服务器应用在http://localhost:8080/
上运行如果我将mime-type标题更改为:
Content-Type: text/html; charset=utf-8
一切正常。
当我添加名为JSONView的firefox时,然后提醒(结果);回到我身边:
<doctype html=""> <div id="json"> <ul class="obj collapsible"> <li> <span class="prop">session_id</span> : <span class="string">"e4cfcd8e91c567cce3767375dd3fd9d"</span> </li> <li> <span class="prop">status</span> : <span class="num">200</span> </li> </ul> </div> </doctype>
但服务器响应是:
{"session_id":"31446a34db6961a8d67e4e47c96cfb4","status":200}
所以,我认为Qooxdoo使用Firefox修改的响应,而不是从serwer返回的纯代码。在像jQuery这样的框架中,我从来没有遇到任何问题。
有没有解决方案,还是应该添加jQuery框架并使用jQuery ajax请求?
我有: Linux下的Qooxdoo 1.2.1和firefox 3.6.12。
答案 0 :(得分:0)
正如您已经提到的,从POST切换到GET是解决方案。
此外,setFormField
方法在内部切换到IframeTransport实现。因此,如果您想使用AJAX传输,您应该坚持使用setParameter
方法 - 就像您已经做的那样。