別の Web ページで作成したスクリプトを使用して、Tumblr ブログから実際のコンテンツをすべてコピーしようとしていますが、コンテンツにアクセスするのに少し問題があります。私のajax呼び出しは次のとおりです。
$.ajax({
url: "http://solacingsavant.tumblr.com/",
dataType: 'jsonp',
success: function(data) {
var elements = $("<div>").html(data)[0].getElementsByTagName("ul")[0].getElementsByTagName("li");
for(var i = 0; i < elements.length; i++) {
var theText = elements[i].firstChild.nodeValue;
alert(theText); // Alert if I got something
// This is where I'll strip the data for the items I want
}
}
});
しかし、それはコンソールに「リソースはスクリプトとして解釈されましたが、MIME タイプ text/html で転送されました」というエラーが表示され、ここで調べてmeta
、ブログの HTML の対応するタグを に変更しました<meta http-equiv="Content-Type" content="application/javascript; charset=utf-8" />
が、成功しませんでした
私も使用してみdataType: 'html'
ました(これは私にとってより理にかなっています)が、「オリジンはAccess-Control-Allow-Originによって許可されていません」というコンソールエラーが発生しました。これも調べて、Tumblrブログにメタタグを追加しました<meta Access-Control-Allow-Origin="*" />
。しかし、再び成功しませんでした
Tumblr全体が変更を許可していないため、私のアプローチは機能しませんAccess-Control
か? もしそうなら、どうすれば問題を回避できますか? そうでない場合、私は何を間違っていますか?
主要な編集 (mikedidthis の有益なコメントに基づく)
Tubmlr API なしではこれを行うことができないようです。そのため、API キーを取得し、API が送信する json の結果にアクセスできるようになりました。コンソールで API キーを使用して jsonp オブジェクトを取得できます。現時点での私のJavaScript:
$.ajax({
url: "http://api.tumblr.com/v2/blog/solacingsavant.tumblr.com/info?api_key=APIkeyGoesHeRe",
dataType: 'jsonp',
success: function(results){
console.log(results);
// Get data from posts here
}
});
この SO 投稿は、Tubmlr ページのデータをソースから変更し、サイトに関する基本情報を見つける方法を理解するのに役立ちましたが、個々の投稿から実際のデータを取得する方法については理解できませんでした。オブジェクトを調べてみましたresults
が、投稿に関連するデータを見つけることができず、結果を jsfiddle に追加することもできませんでした。したがって、私の質問は、「このアプローチを使用して、個々の投稿からデータ (投稿に書かれたテキストなど) をコピーできますか? もしそうなら、どのように? そうでない場合は、他のどのようなアプローチを使用すればよいですか?」