2016-04-14 4 views
1

Задача: Пока на URL1 (случайная страница wikipedia), сделайте запрос ajax к URL2 (100 наиболее распространенных страниц wikipedia слов), отформатируйте список из возвращаемых данных, которые будут использоваться позже.JavaScript Сохранение данных из запроса ajax

я должен запускать это из консоли, а на "url1" пример:

  1. Перейдите url1
  2. Открыть консоль
  3. паста код
  4. хит введите

До сих пор мне удалось захватить весь html-источник в URL1 со следующим:

$.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)); 

Теперь это где моя проблема - объединение двух

$.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)); 
    }; 
}); 

Im предполагаю, что это связано с HTML я хочу отобразить теперь строка, и мой массив ищет HTML-элементов на текущей странице, которая его конечно, не нашел бы.

Thanks

+0

Добро пожаловать в Переполнение стека. Ваш вопрос слишком абстрактный, без каких-либо данных примера. У вас есть данные, возвращаемые в ваш ajax, но никогда не используйте его. – Twisty

+1

, если вы просто хотите выполнить свой матч с HTML, содержащимся в 'data', просто выполните' var content = $ (data); 'then' $ ('. Wikitable tr', content) ', если это где ваш' .wikitable 'есть. –

ответ

0

Простое исправление здесь! Вы совершенно правы, это не разбор html, который вы возвращаете, поэтому просто скажите jQuery, чтобы преобразовать его в объект, который он может использовать $(data), и используйте это, чтобы найти то, что вам нужно.

По существу, ваш «документ» теперь становится $(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, спасибо за это последнее - я, однако, понял, что для меня это было неправильным способом. var Names = $ ('. Wikitable tr'). Map (function() {return $ (this) .find ('td: last'). Text()}). Get(); Это отлично работает с URL2 однако [продолжение в следующем комментарии] – ZiNG

+0

, когда я реализовать и запустить его из url1 как этого ошибки: $ .ajax ({ URL: «https://en.wikipedia.org/wiki/Most_common_words_in_English ' типа: 'GET', DATATYPE: 'HTML', успех: функция (данные) { вар MYVAR = данные; Names = $ .map ($ (MYVAR) .find (' wikitable тр. '), function() {return $ (this) .find (' td: last '). text()}). get(); console.log (имена); } }); – ZiNG

+0

Я заметил, что удалил.get() возвращает массив с соответствующим количеством элементов, но все они пустые, например, «", "", "", "" а не foo, bar, baz и т. д. – ZiNG

Смежные вопросы