2010-12-11 58 views
0

當我發送Ajax查詢到我的Web應用程序,的Qooxdoo不能正確地解釋響應時頭部服務器返回的響應:問題與的Qooxdoo JSON對象

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(應該是object)。

應用的Qooxdoo和服務器應用上http://localhost:8080/

運行。如果我改變MIME類型頭:

Content-Type: text/html; charset=utf-8

一切正常。

當我加入firefox添加名爲JSONView然後alert(result);返回到我:

 
<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

我注意到,當我改變方法類型表單POST到GET並將表單參數設置爲URL與req.setParameter(...)一切都很好。 – tchudyk 2010-12-11 15:21:25

回答

0

正如您已經提到從POST切換到GET是解決方案。

此外,setFormField方法在內部切換到IframeTransport實現。所以如果你想使用AJAX傳輸,你應該堅持使用setParameter方法 - 就像你已經做的那樣。