今日、 Coursera カタログのドキュメントを読んだ後、jquery を使用して coursera api にアクセスしようとしていました。コードを書いてエラーが発生したNo 'Access-Control-Allow-Origin' header is present on the requested resource.
ので、いくつかのグーグルを行ったところ、Jsonpを使用してクロスドメインリクエストを作成できることがわかりました。したがって、私は単純に $.ajax 関数を使用して、このURLにリクエストを送信したり、この単純な 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
. コードの何が問題なのかわかりません。さらに、コンソールでエラーが発生し、URL https://api.coursera.org/api/catalog.v1/courses/2Uncaught SyntaxError: Unexpected token :
を使用する とエラーが発生します。2?callback=localJsonpCallback&_=1418037208234:1
jsonp コールバック関数を使用する必要がありますか? 成功ハンドラーで直接応答を処理できませんか。