2011-12-05 75 views
1

我有下面的html,警告只在Mozilla Firefox中有效,当我点击按钮时。为什么?jquery ajax请求只适用于firefox

<html> 
     <head> 
     <script type="text/javascript" src="jquery.js"></script> 
     <script type="text/javascript"> 
     $(document).ready(function(){ 
     $("button").click(function(){ 
      $.ajax({url:"https://graph.facebook.com/1524623057/", 
      success:function(){ 
      alert(1); 
      }}); 
     });}); 
     </script> 
     </head> 
     <body> 

     <button>send request</button> 
     </body> 
     </html> 
+0

[jquery的ajax不能在facebook应用中工作]的可能副本(http://stackoverflow.com/questions/1186855/jquerys-ajax-not-working-in-facebook-apps) – Jasper

回答

2

来自Facebook的结果是不正确的JSON,因为它换行和标签 - 此外,它是为text/JavaScript的。

Facebook的支持JSONP,但是,这样你就可以这样做,而不是:

$.ajax({ 
    url: 'https://graph.facebook.com/1524623057/', 
    type: 'get', 
    dataType: 'jsonp' 
}).done(function(data){ 
    // the data! 
}); 

这将在回调= jQuery23423234234或者其他基本上不粘随机ID生成给Facebook,返回一个可以调用的函数。

如果你想自己解析它,这样做:

告诉$.ajax使用类型“文本”,例如

$.ajax({ 
    url: 'https://graph.facebook.com/1524623057/', 
    dataType: 'text' 
}) 

然后清理它。这里是关于清理那种js的一个答案,所以你可以使用$.parseJSON,而不必把它放在一个新的函数中或评估它。 Converting multiline, indented json to single line using javascript

这样,你可以var data = $.parseJSON(cleanedUpJsonFromFacebook)并访问对象的属性。

2

它看起来像那个请求返回一个JSON数据类型。该代码在接收结果并且无法识别JSON时抱怨冒号。

试试这个:

$.ajax("https://graph.facebook.com/1524623057/", 
    { 
     success:function(){ 
      alert(1); 
     }, 
     dataType: 'json' 
    } 
); 

此外,成功回调需要,你可以用,当你回检查JSON的响应参数。

退房http://api.jquery.com/jQuery.ajax/

+1

从fb返回的数据isn' t有效的json,无论是在类型(文本/ JavaScript)和格式(有效的json不包含新的行或标签字符之间的键和值) –

+1

有用的信息。另一个不喜欢FB的原因... –

+0

我觉得他们的脚本会做'var result =(new Function('return'+ data)());'' –