0

当我向我的 webApp 发送 AJAX 查询时,当服务器返回带有标头的响应时,Qooxdoo 无法正确解释响应:

内容类型:应用程序/json;字符集=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("完成", function(response){
    var 结果 = response.getContent();
    警报(结果);// 预期:对象
    警报(结果。状态);// 预期:200
}, 这);

req.send();

在这种情况下 alert(result) 返回给我 null (应该是对象)。

Qooxdoo 应用和服务器应用运行在http://localhost:8080/

如果我将 mime-type 标头更改为:

内容类型:文本/html;字符集=utf-8

一切正常。

当我添加到名为 JSONView 的 firefox 添加然后 alert(result); 返回给我:

<doctype html="">
  <div id="json">
    <ul class="obj 可折叠">
      <li>
        <span class="prop">session_id</span>
        :
        <span class="string">"e4cfcd8e91c567cce3767375dd3fd9d"</span>
      </li>
      <li>
        <span class="prop">状态</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。

4

1 回答 1

0

正如您已经提到的那样,从 POST 切换到 GET 是解决方案。

此外,该setFormField方法确实在内部切换到 IframeTransport 实现。因此,如果您想使用 AJAX 传输,您应该坚持使用该setParameter方法 - 正如您已经做的那样。

于 2010-12-13T14:01:38.360 回答