如何使用jQuery删除json请求中的一些无用文本?

时间:2010-07-01 08:05:45

标签: jquery ajax json facebook

我正在对看似Facebook API page的内容做一个json请求。但是,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 :(得分:0)

尝试在网址上添加回调...

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

答案 1 :(得分:0)

您可以使用dataFilter,我之前使用它来处理ASP.Net插入JSON响应中的不需要的字符。对于你的情况,这应该工作:

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

        return data;
    }
});

您可以使用$ .ajaxSetup全局设置dataFilter,这样您就不必为每个请求设置dataFilter。