JSON使用JQuery获取请求(跨域)

Sha*_* H. 6 javascript ajax jquery json

我正在尝试向我无法控制的域上的API发出简单的JSON get请求.

我的代码很简单:

$(document).ready(function () {
        $.ajax({
            type: 'GET',
            url: 'http://pubapi.cryptsy.com/api.php?method=marketdatav2',
            success: function (data) {
                console.log(data);
            }
        });
});
Run Code Online (Sandbox Code Playgroud)

但由于这是一个跨域请求,我在Chrome控制台中收到此错误:

XMLHttpRequest cannot load http://pubapi.cryptsy.com/api.php?method=marketdatav2. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://fiddle.jshell.net' is therefore not allowed access.

当我尝试添加参数时dataType: 'jsonp',Console返回此错误:

未捕获的SyntaxError:意外的令牌:

但是当我检查Chrome中的Network选项卡时,我看到在Headers下,Status Code为200 OK,我可以在Response选项卡中看到完整的响应,但是控制台仍然显示"Unexpected Token:"错误和JQuery JSON请求仍然失败.

这是JS Fiddle链接:http://jsfiddle.net/6Qcq2/您可以看到相同的结果

我试过在http://www.hurl.it上运行网址,它显示状态OK和响应,所以我一定做错了.

我整天都在试图弄清楚如何解决这个问题.

非常感激您的帮忙.

Guf*_*ffa 9

API的响应是JSON,而不是JSONP,因此仅更改数据类型无济于事.

您可以使用发出请求的代理并将JSON转换为JSONP:

$(document).ready(function () {
    $.ajax({
        type: 'GET',
        url: 'http://jsonp.guffa.com/Proxy.ashx?url=pubapi.cryptsy.com%2fapi.php%3fmethod=marketdatav2',
        dataType: 'jsonp',
        success: function (data) {
            console.log(data);
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/6Qcq2/1/