2010-03-05 3 views
4

Mon équipe principale a décidé d'utiliser Qooxdoo comme frontal pour notre projet. Nous développons des applications pour les contrôleurs OpenFlow utilisant NOX, nous utilisons donc le framework NOX webservices. J'ai des problèmes pour obtenir des données du service; Je sais que le service est en cours d'exécution parce que si je vais à l'URL en utilisant Firefox, les bonnes données apparaissent. Voici la partie pertinente de mon code:Problème lors de l'obtention de données à partir d'un service Web à l'aide de Qooxdoo

var req = new qx.io.remote.Request("http://localhost/ws.v1/hello/world", 
            "GET", "text/plain"); 

req.addListener("complete", function(e) { 
    this.debug(e.getContent()); 
}); 

var get = new qx.ui.form.Button("get"); 
get.addListener("execute", function() { 
    alert("The button has been pressed"); 
    req.send(); 
}, this); 
form.addButton(get); 

Dans la console Firebug je reçois ce message après avoir cliqué par l'alerte:

008402 qx.io.remote.Exchange: Unknown status code: 0 (4) 

Et si j'appuie sur le bouton Get encore, je reçois cette erreur:

027033 qx.io.remote.transport.XmlHttp[56]: Failed with exception: [Exception... "Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIXMLHttpRequest.open]" nsresult: "0x80070057 (NS_ERROR_ILLEGAL_VALUE)" location: "JS frame :: file:///home/user/qooxdoo-1.0-sdk/framework/source/class/qx/io/remote/transport/XmlHttp.js :: anonymous :: line 279" data: no] 

J'ai aussi regardé le tutoriel client Twitter, mais l'événement « dataChange » Je mis en place en place de l'événement « tweetsChanged » jamais tiré. Toute aide est appréciée, merci.

Répondre

4

Cela ressemble à un problème de demande de domaine croisé. qx.io.remote.Request utilise XHR pour transporter les données qui peuvent ne pas fonctionner dans tous les cas en raison de la restriction du navigateur. Basculer le drapeau crossDomain sur la demande à true passera de XHR à une balise script insérée dynamiquement n'a pas la restriction de domaine croisé (mais d'autres restrictions).

req.setCrossDomain(true); 

Peut-être que cela résout votre problème. De plus, vous pouvez jeter un oeil à la documentation de l'ensemble à distance pour obtenir des détails sur les demandes de domaine croisées: http://demo.qooxdoo.org/current/apiviewer/#qx.io.remote

également prendre soin de ne pas utiliser un objet de requête deux fois. Le seul travail une fois.

+0

Merci! Il s'agissait d'un problème de domaine croisé. Je devais donc faire en sorte que l'application Qooxdoo soit utilisée par notre application NOX, puis désactiver le mécanisme de prévention du cache afin qu'aucune chaîne de requête ne soit attachée à la requête. (Je suppose que j'aurais pu essayer de le réparer à partir du serveur, mais je brûlerai ce pont si j'y arrive.) Quoi qu'il en soit, ça marche maintenant! – Andy

Questions connexes