Получение данных из текстового файла на другом сервере с помощью jQuery и JSONP - PullRequest
4 голосов
/ 27 января 2011

Привет, я пытаюсь сделать что-то очень простое, но, поскольку я довольно новичок в JSONP, я борюсь с этим. Все, что я хочу сделать, это получить JSON из текстового файла в другом домене (поэтому мне нужно использовать JSONP, чтобы обойти проблемы между доменами). Я использую следующий код:

$.ajax({
        type: "GET",
        dataType: 'jsonp',
        url: "http://www.topshop.com/aboutus/show.txt",
        success: returnedMessage
});

function returnedMessage(data) {
    console.log(data.message);
}

Я знаю, что JSONP возвращает JSON как функцию, но я не знаю, как напечатать получившиеся объекты json на консоль. Я почти уверен, что это можно сделать, хотя, как я вижу на вкладке NET Firebug, он возвращает JSON в качестве ответа. В консоли Firebug я получаю сообщение о недопустимой метке, которое, я думаю, объясняется тем, что я неправильно обрабатываю запрос JSONP. Кто-нибудь может мне с этим помочь?

Ответы [ 2 ]

2 голосов
/ 27 января 2011

Ваш формат JSONP неверен.Файл содержит данные JSON, а не данные JSONP.Вы получаете сообщение об ошибке, потому что браузер пытается запустить объект как код.Вам нужно поместить вызов функции вокруг данных JSON:

callback({
  "message": "This is coming from staging."
});

Поскольку текстовый файл не может использовать строку запроса с именем функции, которая ему отправляется, вы должны указать имя функции, используясвойство jsonpCallback вместо:

$.ajax({
  type: "GET",
  dataType: 'jsonp',
  jsonpCallback: 'callback',
  url: "http://www.topshop.com/aboutus/show.txt",
  success: returnedMessage
});
0 голосов
/ 27 января 2011

Это должно работать:

$.getJSON('http://www.topshop.com/aboutus/show.txt?callback=?', function(data) {
  console.log(data);
});
...