получение необработанной строки json с помощью метода jquery ajax - PullRequest
2 голосов
/ 22 июня 2010

Я использую метод jquery ajax, устанавливаю тип данных json, получаю ответ jsonp от междоменного сервера. Но то, что я хочу, это сырая строка ответа JSON. поэтому я установил текст типа данных, но я получил только пустую строку.

      $.ajax({
        url:"http://api.douban.com/book/subject/isbn/9787802057388?alt=xd&callback=?",
        dataType:'text',
        success:function(data){
            alert(data);
        } //endof success
    }); //endof .ajax

Может кто-нибудь сказать мне, почему? если для этого использовать метод getJSON, как я могу получить необработанную строку json?

1 Ответ

3 голосов
/ 22 июня 2010

Установка dataType на text запрещает jQuery обрабатывать запрос как JSONP.jQuery выполняет некоторые действия в фоновом режиме для запросов такого типа (подставляя callback=? в URL для имени функции и определяя функцию success как глобальную функцию).

Почему вы хотите, чтобы ответ был необработанным текстом?Невозможно получить ответ, который является просто JSON из запроса JSONP, поскольку природа JSONP требует, чтобы ответ был заключен в вызов функции.

Установка dataTypeна jsonp работает, но, конечно, объект возвращается.

$.ajax({
    url:"http://api.douban.com/book/subject/isbn/9787802057388?alt=xd&callback=?",
    dataType:'jsonp',
    success:function(data){
        alert(data);
    } //endof success
}); //endof .ajax​​​​

Если вы хотите получить строку, вы можете дважды json-кодировать часть ответа на сервере, чтобы он был полученв виде строки, или используйте JSON-кодировщик JavaScript на клиенте и снова его кодируйте, но оба они не кажутся идеальными решениями.Объект гораздо удобнее и полезнее.

...