我正在对看似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
函数被赋予空字符串。我做错了吗?
答案 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。