2010-07-01 55 views
0

我正在做什么似乎是Facebook API page json请求。然而,json以for (;;);开头,这是破坏jQuery处理它的尝试。如何使用jQuery在json请求中删除一些无用的文本?

如何切掉这些不需要的字符?我可以使用$.ajax呼叫的dataFilter属性吗?

我的测试代码:

$.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

'dataFilter:function(data,type)'定义类型为'json'? – jAndy 2010-07-01 08:09:41

回答

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为每个请求。

0

尝试在URL中加入一个回调...

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

+0

Nada。无论如何,这是行不通的,是吗?毕竟,'callback(for(;;); {'key':'value'})'不是有效的javascript。 – Eric 2010-07-01 08:14:39

+0

我认为它没有办法...它是一个相同的领域技巧的限制...阅读它在这里... http://stackoverflow.com/questions/856045/how-to-restrict-json-access – Reigel 2010-07-01 08:59:46