为什么我的回调不适用于JSONP数据

时间:2013-01-27 12:26:43

标签: jquery ajax json web-services jsonp

我无法获取以下数据的Feed。我知道我为ajax指定数据的方式有问题。以下是我的尝试:

<script type="text/javascript">
        $(function() {
            $.ajax({
                type:'GET',
                dataType:'jsonp',
                url:'http://api.stackoverflow.com/1.0/tags/?callback=?',
                success:function(data) {
                    alert(data.tags[0].name.length)
                },
                error:function() {
                    alert("Sorry, I can't get the feed");   
                }
            })
        });
    </script>

我收到以下错误:

  

SyntaxError:无效标签[在此错误时出现错误]

     

“total”:31987,

根据TJ,我只是获取原始JSON文件。现在,当我的服务器发送JSON请求时,我需要做什么。

1 个答案:

答案 0 :(得分:4)

如果查看对http://api.stackoverflow.com/1.0/tags/?callback=foo的回复,您会看到它是JSON,而不是JSONP。根据{{​​3}}上的文档,您需要添加jsonp查询参数以获取JSONP:http://api.stackoverflow.com/1.0/tags/?jsonp=foo

对于想要控制回调名称以获得最大可靠性的jQuery,您可以使用jsonp选项告诉它该参数的名称应该是什么(并且不要将其放入URL,jQuery会这样做):

$.ajax({
    type:'GET',
    dataType:'jsonp',
    jsonp: "jsonp",
    url:'http://api.stackoverflow.com/1.0/tags/',
    success:function(data) {
        alert(data.tags[0].name.length)
    },
    error:function() {
        alert("Sorry, I can't get the feed");   
    }
});