挑战: 在URL1(随机维基百科页面)上,向URL2(100个最常见的单词维基百科页面)发出ajax请求,格式化后面要使用的返回数据中的列表。
我必须在" URL1" 例如:
到目前为止,我已经能够在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元素,当然它找不到。
由于
答案 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);
}
});