JavaScript保存ajax请求中的数据

时间:2016-04-14 22:12:02

标签: javascript jquery ajax

挑战: 在URL1(随机维基百科页面)上,向URL2(100个最常见的单词维基百科页面)发出ajax请求,格式化后面要使用的返回数据中的列表。

我必须在" URL1" 例如:

  1. 导航至URL1
  2. 打开控制台
  3. 粘贴代码
  4. 点击进入
  5. 到目前为止,我已经能够在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));
    

    现在这就是我的问题 - 结合两个

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

    我猜这是因为我想要映射的HTML现在是一个字符串,我的数组正在当前页面上寻找HTML元素,当然它找不到。

    由于

1 个答案:

答案 0 :(得分: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);
   }
 });