1

我正在尝试使用 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 请求存在错误。为什么这个请求没有成功的想法?

4

1 回答 1

0

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

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

在您的情况下,您已经明确设置了 jsonpCallback 函数名称。所以你必须把 jsonp 属性设置为 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');
        }
    });
于 2013-08-02T11:39:52.870 回答