jquery ajax请求仅适用于firefox

时间:2011-12-05 20:56:30

标签: jquery ajax facebook

我有以下html,当我点击按钮时,警报只能在mozilla 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>

2 个答案:

答案 0 :(得分:2)

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

试试这个:

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

此外,成功回调会获取一个响应参数,您可以使用它来检查JSON。

查看http://api.jquery.com/jQuery.ajax/

答案 1 :(得分:2)

facebook的结果不是正确的json,因为它有换行符和标签 - 同样,它也用作text / javascript。

Facebook支持jsonp,所以你可以这样做:

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

这基本上会对?callback = jQuery23423234234或者为facebook生成任何随机id,返回一个可以调用的函数。

如果您想自己解析,请执行以下操作:

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

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

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

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