2010-05-24 7 views
1

J'apprends le framework Qooxdoo et j'essaye de le faire fonctionner avec un petit service web Django. Django webservice retourne simplement les données JSON comme ceci:Problème de requête Qooxdoo REST JSON - jeton inattendu puis délai

{ "name": "Football", "description": "The most popular sport." } 

Puis-je utiliser le code suivant pour interroger cette url:

var req = new qx.io.remote.Request(url, "GET", "application/json"); 
req.toggleCrossDomain(); 

req.addListener("completed", function(e) { 
       alert(e.getContent()); 
        }); 
req.send(); 

Malheureusement quand j'exécute le code que j'obtiens l'erreur jeton inattendu et demander les délais d'attente.

Uncaught SyntaxError: Unexpected token : 
Native.js:91013011 qx.io.remote.RequestQueue[246]: Timeout: transport 248 
Native.js:91013011 qx.io.remote.RequestQueue[246]: 5036ms > 5000ms 
Native.js:91013013 qx.io.remote.Exchange[248]: Timeout: implementation 249 

JSLint signale que c'est un JSON valide, alors je me demande pourquoi qooxdoo ne pas analyser correctement.

Répondre

5

Le problème est probablement avec cette ligne:

req.toggleCrossDomain(); Par défaut, crossDomain est false, alors toggleCrossDomain le définit sur true. Cela force qx.io.remote.Request à utiliser le transport de script, qui ne fonctionne pas comme un XMLHttpRequest standard: La requête doit contenir un identifiant, alors que la réponse du serveur doit utiliser le même identifiant et envelopper la réponse réelle dans un appel à qx.io.remote.transport.Script._requestFinished(). Ceci est expliqué plus en détail dans la documentation du paquet qx.io.remote:

http://demo.qooxdoo.org/current/apiviewer/#qx.io.remote

+0

Merci, je l'ai déployé sur le même domaine et ça a fait l'affaire. – freiksenet

0

Votre demande expire. L'URL est-elle correcte? Y a-t-il des problèmes de pare-feu qui s'y connectent? Fondamentalement, votre code ne reçoit pas le JSON que vous attendez, mais reçoit à la place une erreur de délai d'attente.

+0

A travers les journaux que je peux voir ce serveur devient correctement la demande, de sorte que l'URL est juste et demande y accède. – freiksenet

+0

OK. Il est temps de donner la réponse alors. Votre erreur est due au fait que le message d'erreur (que vous avez posté précédemment) est analysé en tant que JSON, ce qui n'est pas le cas. –

+0

J'ai augmenté le délai d'attente à 1000000ms, la console JavaScript montre qu'il lance d'abord cette erreur de jeton inattendue et seulement ensuite (beaucoup plus tard) obtient un délai d'expiration. – freiksenet

Questions connexes