Как я могу удалить некоторый бесполезный текст в запросе json с помощью jQuery? - PullRequest
0 голосов
/ 01 июля 2010

Я выполняю запрос json на странице Facebook API . Однако json имеет префикс for (;;);, который разрушает попытки jQuery обработать его.

Как я могу отрезать этих нежелательных персонажей? Могу ли я использовать свойство dataFilter вызова $.ajax?

Мой тестовый код:

$.ajax({
    url: 'http://www.facebook.com/ajax/typeahead_friends.php',
    data: {u: userid, __a: 1},
    callback: function(data, status) {
        alert(data);
        //alert(data.payload.friends);
    },
    dataFilter: function(data,type) {
        alert(data);
        return data;
    },
    dataType: 'json'
});

Однако функции dataFilter присваивается пустая строка. Я что-то не так делаю?

Ответы [ 2 ]

0 голосов
/ 01 июля 2010

Вы можете использовать dataFilter, я использовал его раньше для обработки нежелательных символов, которые ASP.Net вставлял в ответы JSON. Для вашего случая это должно работать:

$.ajaxSetup({
    dataFilter: function(data, type) {
        if (type === 'json') {
            data.replace('for (;;);', '');
            return JSON.parse(data);
        }

        return data;
    }
});

Вы можете использовать $ .ajaxSetup для глобальной установки dataFilter, поэтому вам не нужно устанавливать dataFilter для каждого запроса.

0 голосов
/ 01 июля 2010

попробуйте добавить обратный вызов в URL ...

http://www.facebook.com/ajax/typeahead_friends.php?jsoncallback=?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...