我可以使用JSONP访问任何API,或者API是否需要专门支持它?

时间:2015-01-09 04:41:00

标签: jquery ajax jsonp cors

我正在尝试从我的网站foo.com访问bar.com上的API。 Bar.com不允许使用CORS,我不知道他们是否正式支持JSONP。

我是否仍然可以通过JSONP(使用jQuery)访问API,或者网站是否明确需要支持它?

注意,这是我的AJAX请求:

    $.ajax({
        url: 'https://api.example.com',
        jsonp: 'callback',
        dataType: 'jsonp',
        data: {
            'command' : 'abc',
            'partnerName' : 'def',
            'partnerPassword' : 'ghi',
            'partnerUserID' : 'jkl',
            'partnerUserSecret' : 'mnop'
        },
        error: function (response) {
            console.log(response);
            return false;
        },
        success: function (response) {
            console.log(response);
            return false;
        }
    });
},

从Chrome中我得到:

Uncaught SyntaxError: Unexpected token :

1 个答案:

答案 0 :(得分:2)

这是因为JSONP所做的是尝试评估来自API端点的代码。

如果通话结果是,请说

{"result": "OK"}

然后,为了使JSONP工作,服务器必须以这种方式响应它:

callback({"result": "OK"})

oyu在您的ajax调用中将属性jsonp定义为callback