2010-07-20 9 views
12

J'ai mis en place NodeJS et il est de retour des données quand je passe en revue à l'URL: http://184.106.206.235NodeJS ne renvoient aucune donnée à jQuery.getJSON

Cependant, quand je tente d'appeler cette URL en utilisant $.getJSON, les spectacles de rappel null pour la variable data et "success" pour la variable textStatus.

J'imagine que cela pourrait être une chose interdomaine, mais je suis surpris que le textStatus dise "success" si c'est le cas.

Dans le cas où il est utile, voici le côté serveur JS:

http.createServer(function(req, res){ 
    var output = {message: "Hello World!"}; 
    var body = JSON.stringify(output); 

    res.writeHead(200, {'Content-Type': 'application/json', 'Content-Length': body.length}); 
    res.end(body); 
}).listen(80, "184.106.206.235"); 

Toutes les idées?

+0

est le JavaScript sur 'http hébergé: // 184.106.206.235'? – Anurag

+0

Oui, bien que j'essaie d'y accéder en utilisant "client" JS hébergé sur un domaine différent. – marclar

+0

Eh bien, ce serait votre problème alors. Quel "statut du texte"? – Pointy

Répondre

16

Ajouter le "Access-Control-Allow-Origin": "*" bien à votre writeHead() appel:

res.writeHead(200, { 
    "Content-Type": "application/json", 
    "Access-Control-Allow-Origin": "*" 
}); 
+0

Merci, c'est une excellente réponse !!! – oivoodoo

+0

Le type de contenu pour les données json doit être application/json, voir question http://stackoverflow.com/questions/477816/the-right-json-content-type –

3

Juste une note pour toute personne ayant le même problème, la solution ci-dessus a fonctionné pour moi avec une modification mineure:

"Content-Type": "application/json"

Non "text/JSON" .

Merci pour la solution! Ça me rendait fou.

2

si vous utilisez express cadre, vous pouvez essayer une des opérations suivantes:
1. res.contentType('json'); pour définir le type de contenu.
2. res.send({ some: 'json' }); qui va définir le type de contenu et l'analyser pour vous.
3. res.json({ user: 'tj' }); probablement le meilleur moyen de le faire.

it helps :)

Questions connexes