JQUERY JSONP выпуск - PullRequest
       9

JQUERY JSONP выпуск

1 голос
/ 06 июля 2011

Я использую Jquery 1.6.2.

Это работает:

$.getJSON("http://b.webvm.net/?jsoncallback=?",
    function(data) {
        alert("OK");
    });
});

но это не так:

$.getJSON("http://isp123.co.uk/cw/NorthWales/test.txt?jsoncallback=?",
    function(data){
        alert("OK");
    });
});

Оба удаленных файла выглядят одинаково:

http://b.webvm.net/?jsoncallback=?

и

http://isp123.co.uk/cw/NorthWales/test.txt?jsoncallback=?

однако во втором примере предупреждающее сообщение не срабатывает.

Ответы [ 2 ]

5 голосов
/ 06 июля 2011

Текстовый файл не обеспечивает функцию обратного вызова, как другая ссылка.JQuery на самом деле не вызывает http://b.webvm.net/?jsoncallback=?, но вместо этого что-то вроде http://b.webvm.net/?jsoncallback=jQuery2239203480932480392849032809, которое затем вызывает эту функцию в вашем скрипте:

jQuery2239203480932480392849032809({"name" : "hello world"});

Текстовый файл с другой стороны, нене вызывать любую функцию, даже когда jQuery добавляет функцию обратного вызова http://isp123.co.uk/cw/NorthWales/test.txt?jsoncallback=jQuery2239203480932480392849032809, возвращает

({"name" : "hello world"});

Чтобы решить эту проблему, вы можете использовать параметр jsonpCallback в своем запросе ajax, чтобы заставить jQuery использоватьстатическая функция, в которую вы затем поместите свой json.

Например, если вы установите jsonpCallback в "mycallback", ваш текстовый файл должен вернуть:

mycallback({"name" : "hello world"});
0 голосов
/ 06 июля 2011

Я заметил, что первый пример возвращается с типом mime "text / html", а второй возвращается с "text / plain".Ваш браузер может неправильно интерпретировать тип MIME "text / plain".Попробуйте вернуть второй обратно как текст / html или application / json

...