2010-12-11 8 views
0

Wenn ich schicke AJAX-Abfrage meine webApp, Qooxdoo die Antwort nicht interpretieren kann richtig, wenn der Server Rückkehr Reaktion mit Kopf:Problem mit JSON-Objekt in qooxdoo

Content-Type: application/json; charset=utf-8

Hier ist Beispielcode:

 
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(); 

In diesem Fall gibt alert (result) zu mir null (sollte Objekt sein).

Qooxdoo App und Server-Anwendung läuft auf http://localhost:8080/

Wenn ich Mime-Type-Header zu ändern:

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

alles ordnungsgemäß funktioniert.

Wenn ich zu firefox Zusatz namens JSONView hinzufügen, dann alert (result); kehrt zu mir:

 
<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> 

aber Server-Antwort ist:

 
{"session_id":"31446a34db6961a8d67e4e47c96cfb4","status":200} 

Also, ich denke, dass zurück von Firefox Antwort Qooxdoo geändert, nicht der reine Code aus serwer. In Frameworks wie jQuery hatte ich noch nie Probleme damit.

Gibt es eine Lösung dafür, oder sollte ich jQuery Framework hinzufügen und jQuery ajax Anfragen verwenden?

Ich habe: Qooxdoo 1.2.1 und Firefox 3.6.12 unter Linux.

+0

Ich habe festgestellt, dass, wenn ich den Formattyp POST in GET ändere und Formularparameter auf URL mit req.setParameter (...) setze, alles in Ordnung sei. – tchudyk

Antwort

0

Wie Sie bereits erwähnt haben, ist der Wechsel von POST zu GET die Lösung.

Darüber hinaus wechselt die setFormField-Methode intern zu der IframeTransport-Implementierung. Wenn Sie also den AJAX-Transport verwenden möchten, sollten Sie sich an die Methode setParameter halten - wie Sie es bereits tun.