jquery.xdomainajax.jsを利用して外部サイトのタイトルを取得できるようなフォームを作成していました。(正常に動いていたのですが、動かなくなった。)
どうやらここ最近YQLの仕様が変わったことで、動かなくなっていたというところまではわかりました。
さらに調べて、この記事を参考にjquery.xdomainajax.jsのファイルを修正しました。
確かにレスポンスは返って来るようになったものの、未だページタイトルが取得できずに困っています。
該当箇所のJSは以下の通りです。
javascript
1$(document).on('click','.get-link-title-btn',function(){ 2 3 // urlを取得 4 var url = $('#url').val(); 5 6 // タイトルを取得 7 $.ajax({ 8 url: url, 9 type: 'GET', 10 dataType: 'html', 11 cache : false, 12 success: function(data) { 13 var row = data.responseText; 14 $.when( 15 xml = $.parseXML(row), 16 ).done(function(xml){ 17 var title = $(xml).find("title").text(); 18 // フォームに追加 19 if(title == "") { 20 alert("タイトルの取得に失敗しました。何度か試しても失敗する場合は手入力でお願いします。"); 21 } 22 else { 23 $('#link-title').val(title); 24 } 25 }); 26 }, error:function(e) { 27 alert("タイトルの取得に失敗しました。何度か試しても失敗する場合は手入力でお願いします。"); 28 } 29 }); 30 });
例えば、「https://www.yahoo.co.jp/」を叩いた場合の変数xmlは、以下のようなデータが返ってきます。
それらしきデータなのですが、$(xml).find("title").text();
としてタイトルタグのテキストを取得しようとすると何も取れません。
これは何が足りないのでしょうか??
【回答への追記】
以下のコードで実行
javascript
1var result = $(xml).find("result").text(); 2var title = $(result).find('title');
※var title = $(result).find('title').text();
で実行すると値が空になります。
var result = $(xml).find("result").text();
の結果
var title = $(result).find('title');
の結果
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/03 02:22 編集
2017/07/03 02:25
2017/07/03 02:28 編集
2017/07/03 02:29