2010-07-20 9 views
12

He creado NodeJS y se está volviendo datos cuando hojeo a la URL: http://184.106.206.235NodeJS no volverán a los datos jQuery.getJSON

Sin embargo, cuando trato de llamar a esa URL usando $.getJSON, los espectáculos de devolución de llamada null para la variable data y "success" para la variable textStatus.

Imagino que esto podría ser una cuestión de dominio cruzado, pero me sorprende que el textStatus dice "success" si ese es el caso.

En caso de que sea útil, aquí está el JS-lado del servidor:

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

¿Alguna idea?

+0

¿Está el JavaScript alojados en 'http: // 184.106.206.235'? – Anurag

+0

Sí, aunque intento acceder a él utilizando el JS "cliente" alojado en un dominio diferente. – marclar

+0

Bueno, ese sería su problema entonces. ¿Qué "estado del texto"? – Pointy

Respuesta

16

Añadir el "Access-Control-Allow-Origen": "*" propiedad a su writeHead() llamada:

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

¡Gracias, es una gran respuesta! – oivoodoo

+0

El tipo de contenido para los datos json debe ser application/json, ver pregunta http://stackoverflow.com/questions/477816/the-right-json-content-type –

3

Sólo una nota para cualquier persona que tenga el mismo problema, la solución anterior trabajó para mí con una pequeña modificación:

"Content-Type": "application/json"

No "text/json" .

¡Gracias por la solución! Me estaba volviendo loco.

2

si está utilizando express marco puede probar uno de los siguientes:
1. res.contentType('json'); para configurar el tipo de contenido.
2. res.send({ some: 'json' }); que configurará el tipo de contenido y lo analizará por ti.
3. res.json({ user: 'tj' }); probablemente la mejor manera de hacerlo.

espero que ayude :)

Cuestiones relacionadas