NodeJS не будет возвращать данные в jQuery.getJSON - PullRequest
12 голосов
/ 21 июля 2010

Я настроил NodeJS, и он возвращает данные, когда я перехожу по URL: http://184.106.206.235

Однако, когда я пытаюсь вызвать этот URL с помощью $.getJSON, обратный вызов показывает null дляпеременная data и "success" для переменной textStatus.

Я предполагаю, что это может быть междоменной вещью, но я удивлен, что textStatus говорит "success", если этоcase.

В случае, если это полезно, вот 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");

Есть идеи?

Ответы [ 3 ]

16 голосов
/ 30 августа 2010

Добавьте свойство «Access-Control-Allow-Origin»: «*» к вашему вызову writeHead ():

res.writeHead(200, {
  "Content-Type": "application/json",
  "Access-Control-Allow-Origin": "*"
});
3 голосов
/ 28 июля 2010

Просто замечание для тех, у кого возникла та же проблема, приведенное выше решение сработало для меня с одним незначительным изменением:

"Content-Type": "application / json"

Не "text / json".

Спасибо за решение! Это сводило меня с ума.

2 голосов
/ 19 марта 2012

если вы используете express framework, вы можете попробовать одно из следующих:1. res.contentType('json'); для установки типа контента.2. res.send({ some: 'json' });, который установит тип контента и проанализирует его для вас.3. res.json({ user: 'tj' }); вероятно, лучший способ сделать это.

надеюсь, это поможет:)

...