2010-07-20 9 views
12

Ich habe NodeJS eingerichtet und es Daten zurückkehrt, wenn ich an die URL durchsuchen: http://184.106.206.235NodeJS werden keine Daten an jQuery.getJSON zurückkehren

Allerdings, wenn ich versuchen, diese URL zu nennen $.getJSON verwenden, die Callback-Shows null für die data Variable und "success" für die textStatus Variable.

Ich kann mir vorstellen, dass dies eine domänenübergreifende Sache sein könnte, aber ich bin überrascht, dass die textStatus sagt "success", wenn das der Fall ist.

Im Fall ist es hilfreich, hier ist die serverseitige 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"); 

Irgendwelche Ideen?

+0

Ist die JavaScript gehostet 'http hilft: // 184.106.206.235'? – Anurag

+0

Ja, obwohl ich versuche, mit Hilfe von "client" JS auf einer anderen Domain zuzugreifen. – marclar

+0

Nun, das wäre dann dein Problem. Was für ein "Textstatus"? – Pointy

Antwort

16

Fügen Sie die "Access-Control-Allow-Origin": "*" Eigenschaft auf Ihren Schreibkopf() -Aufruf:

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

Danke, es ist eine gute Antwort !!! – oivoodoo

+0

Der Inhaltstyp für JSON-Daten sollte application/json sein, siehe Frage http://stackoverflow.com/questions/477816/the-right-json-content-type –

3

Nur ein Hinweis für alle das gleiche Problem, arbeitete die Lösung oben für mich mit einer geringfügigen Änderung:

"Content-Type": "application/json"

Nicht "text/json" .

Danke für die Lösung! Es hat mich verrückt gemacht.

2

wenn Sie express Framework verwenden, können Sie versuchen, eine der folgenden Möglichkeiten:
1. res.contentType('json'); auf Inhaltstyp festlegen.
2. res.send({ some: 'json' });, die den Inhaltstyp festlegen und für Sie analysieren.
3. res.json({ user: 'tj' }); wahrscheinlich der beste Weg, es zu tun.

hoffen, dass es :)