今天我在阅读Coursera 目录文档后尝试使用 jquery 访问 coursera api 。写了一段代码,报错了No 'Access-Control-Allow-Origin' header is present on the requested resource.
于是google了一些,发现可以使用Jsonp进行跨域请求。所以我只是使用 $.ajax 函数向这个url发出请求,或者说这个简单的 url和其他一些这样的 url,但失败了。
网址上的数据就像{"elements":[{"id":2,"shortName":"ml","name":"Machine Learning","links":{}}],"linked":{}}
我写了以下代码。
$(document).ready(function() {
$.ajax({
url: "https://api.coursera.org/api/catalog.v1/courses/2",
type: "GET",
dataType: 'jsonp',
jsonpCallback: 'localJsonpCallback',
contentType: 'application/json',
success: function(){
alert("success");
},
error:function(jqxhr, textStatus, error){
alert("textStatus : " + textStatus + "\n error" + error);
}
});
function localJsonpCallback(data) {
alert("localJsonpCallback : " + data);
}
});
上面的代码失败并转到错误处理程序,它的打印错误是 ,textstatus: parseError
和Error: localJsonpCallback was not called
。我没有得到代码有什么问题。此外,在控制台中我收到错误Uncaught SyntaxError: Unexpected token :
,并且2?callback=localJsonpCallback&_=1418037208234:1
在使用 url https://api.coursera.org/api/catalog.v1/courses/2时。
有必要使用jsonp回调函数吗?我们不能在成功处理程序中处理直接响应吗?