2016-04-14 7 views
1

挑戦: URL1(ランダムウィキペディアのページ)の間に、URL2(最も一般的な単語100個のウィキペディアのページ)にajaxリクエストを行い、後で使用するために返されたデータのリストをフォーマットします。JavaScript ajaxリクエストからデータを保存する

"URL1" 例にしながら、私は、コンソールからこれを実行する必要があります。

  1. 移動URL1
  2. オープンコンソール
  3. ペーストコード

を入力ヒットこれまでのところ、URL1で次のようにHTMLソース全体を取得することができました:

$.ajax({ 
    url: 'https://en.wikipedia.org/wiki/Most_common_words_in_English', 
    type: 'GET', 
    dataType: 'html', 
    success: function (response) { 
     console.log(response); // works as expected (returns all html) 
    } 
}); 

私はコンソールに全体HTMLソースを見ることができます - 私は、私は私が行うことができたており、必要なものをつかんでフォーマットする方法を見つけ出すためにURL2に行ってきました:

var array = $.map($('.wikitable tr'),function(val,i){ 
     var obj = {}; 
     obj[$(val).find('td:first').text()] = $(val).find('td:last').text(); 
     return obj; 
    }); 
console.log(JSON.stringify(array)); 

さて、これは私の問題がどこにあるかである - 私はマップするHTMLは現在の文字列である、と私の配列は、現在のページのHTML要素を探していると、これが原因である推測2

$.ajax({ 
url:'https://en.wikipedia.org/wiki/Most_common_words_in_English', 
type:'GET', 
dataType:'html', 
success: function(data){ 
    // returns correct table data from URL2 while on URL2 -- issue while running from URL1 
    var array = $.map($('.wikitable tr'),function(val,i){ 
     var obj = {}; 
     obj[$(val).find('td:first').text()] = $(val).find('td:last').text(); 
     return obj; 
     }); 
console.log(JSON.stringify(array)); 
    }; 
}); 

イムを組み合わせていることをもちろん見つからないだろう。

ありがとうございました

+0

ようこそ。あなたの質問は、何らかの種類のサンプルデータなしでは抽象的すぎます。あなたは 'data'をあなたのAjaxに返しますが、決してそれを使用しません。 – Twisty

+1

あなただけ 'data'、ちょうど' VAR内容= $(データを)やるに含まれるHTMLと照らし合わせて一致を実行したい場合は、どこ '.wikitableことだ場合は、' 'そして' $(「wikitable TR。」、コンテンツ) 'です。 –

答えて

0

ここに簡単な修正!あなたは正確に正しいです、それはあなたが返すHTMLを解析し、そのちょうどそれが$(data)を使用して、あなたが必要なものを見つけるためにそれを使用できるオブジェクトに変換するjQueryのを教えてくれていません。本質的には

、あなたの「文書は」今、あなたはすべてのクエリのソースとして使用します$(data)になります。スタックオーバーフローへ

$.ajax({ 
    url: 'https://en.wikipedia.org/wiki/Most_common_words_in_English', 
    type: 'GET', 
    dataType: 'html', 
    success: function(data) { 
    var myVar = data; 
    Names = $.map($(myVar).find('.wikitable tr'), function(el, index) { 
     return $(el).find('td:last').text() 
    }); 
    console.log(Names); 
    } 
}); 
+0

こんにちはacupajoe、最後の1つのおかげで - 私はそれが後でそれについて行くつもりはない方法が間違っていたことに気づいた。 。 VAR名= $( 'wikitable TR ')マップ(関数(){$(この).find(' TD:最後' を返す)のテキストを()。})を取得();。 私は実装し、このITエラーのようURL1からそれを実行したときしかしこれは、[次のコメントに引き続き] URL2 – ZiNG

+0

から完璧に動作します: $アヤックス({ URL:「https://en.wikipedia.org/wiki/Most_common_words_in_English ' タイプ 'GET'、 データ型: 'HTML'、 成功:機能(データ){ するvar myVarに=データ; 名= $ .MAP($(myVarに).find(' wikitable TR。 ')、機能(){$(これを返す).find(' TD:。最後の ')、テキスト()}。)(GET); はconsole.log(名);} }); – ZiNG

+0

私は削除した場合気づいた。get()適切な量の配列を返しますが、foo、bar、bazなどではなく ""、 ""、 ""など空白です。 – ZiNG

関連する問題