Подтвердить что ты не робот

NodeJS не вернет данные в jQuery.getJSON

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

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

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

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

Любые идеи?

4b9b3361

Ответ 1

Добавьте свойство "Access-Control-Allow-Origin": "*" в ваш вызов writeHead():

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

Ответ 2

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

"Content-Type": "application/json"

Не "текст/json".

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

Ответ 3

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

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