为什么不调用JSONP回调函数?

时间:2013-03-02 03:45:45

标签: ajax jquery cross-domain jsonp

我正在尝试使用jsonp访问以下数据:

https://github.com/users/jbranchaud/contributions_calendar_data

但是,我尝试过的解决方案都没有导致调用回调函数或成功函数。当我使用Chrome / Firefox检查工具时,我可以查看脚本并看到响应是200 Ok并且响应文本包含来自上述URL的数据。然而,回调函数和成功函数都不会在任何时候被调用。关于如何使其发挥作用的任何想法?

以下是我最近的尝试:

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
    <script type="text/javascript">
        function parseResults(results) {
            console.log('hello function callback.');
        }

        $.ajax({
            url: 'https://github.com/users/jbranchaud/contributions_calendar_data',
            type: 'post',
            dataType: 'jsonp',
            jsonp: true,
            jsonpCallback: 'parseResults',
            success: function(data, textStatus, jqXHR) {
                console.log('success_function');
                console.log(data);
            },
            error: function() {
                console.log('error with jsonp request');
            }
        });
    </script>

当我加载页面时,我在控制台中看到“jsonp请求错误”,因此ajax请求出错。为什么这个请求没有成功的想法?

1 个答案:

答案 0 :(得分:0)

在ajax请求中,尝试将属性'jsonp'设置为false( jsonp:false )。

基本上,JQuery生成一个自动函数回调名称,如下所示:JQuery1223 ... 34。

在您的情况下,您已经明确设置了jsonpCallback函数名称。所以你必须将jsonp attribut置于false。 你的代码应该是这样的:

$.ajax({
        url: 'https://github.com/users/jbranchaud/contributions_calendar_data',
        type: 'post',
        dataType: 'jsonp',
        jsonp: false,
        jsonpCallback: 'parseResults',
        success: function(data, textStatus, jqXHR) {
            console.log('success_function');
            console.log(data);
        },
        error: function() {
            console.log('error with jsonp request');
        }
    });