JavaScript-数组值为空
我有一个独特的挑战: 在URL1(随机wikipedia页面)上,向URL2(100个最常见的单词wikipedia页面)发出ajax请求,从返回的数据创建数组以供以后使用 我必须在“URL1”上从控制台运行此命令 例如:JavaScript-数组值为空,javascript,jquery,arrays,ajax,Javascript,Jquery,Arrays,Ajax,我有一个独特的挑战: 在URL1(随机wikipedia页面)上,向URL2(100个最常见的单词wikipedia页面)发出ajax请求,从返回的数据创建数组以供以后使用 我必须在“URL1”上从控制台运行此命令 例如: 导航到URL1 开放式控制台 粘贴代码 按回车键 到目前为止,我已经能够非常接近以下内容: $.ajax({ url: 'https://en.wikipedia.org/wiki/Most_common_words_in_English', type: '
$.ajax({
url: 'https://en.wikipedia.org/wiki/Most_common_words_in_English',
type: 'GET',
dataType: 'html',
success: function(data) {
Names = $.map($(data).find('.wikitable tr'), function() {
return $(this).find('td:last').text()});
console.log(Names);
}
});
但是我在数组中得到了空值
在URL2(ajax请求中的链接)上,以下代码工作得非常完美
var Names = $('.wikitable tr').map(function() {
return $(this).find('td:last').text() }).get(); console.log(Names);
我使用这段代码时出错,因为.get,在删除它之后,我得到了一个包含适当数量元素的数组,但它们都是空的
谢谢您的逻辑是正确的,只是使用了错误的函数。和是具有不同上下文和不同参数的不同函数 如果使用正确的
map
功能,您的问题应该得到解决。改变
success: function(data) {
Names = $.map($(data).find('.wikitable tr'), function() {
return $(this).find('td:last').text();
});
console.log(Names);
}
到
在map
的第二种形式中,将this
关键字设置为DOM元素
我还注意到,Wild code返回的是105
文本,而不是表中的100
单词,因为它也在选择表头。.map
的另一个很酷的技巧是,如果返回null
,它将不会在结果中包含该值。因此,您可以
Names = $(data).find('.wikitable tr').map(function() {
return $(this).find('td:last').text() || null;
});
由于空字符串的计算结果为false
,因此return
将返回null
,而不是'
。或者,您可以使选择器更具体,例如:
Names = $(data).find('.wikitable tr td:odd').map(function() {
return $(this).text();
});
如果抛出任何错误,您也可以通过F12进行检查
无法加载XMLHttpRequest。请求的资源上不存在“Access Control Allow Origin”标头。因此不允许访问源代码“null”。只需使用Js映射在Jquery对象(Html元素对象)上迭代即可 JQuery映射只在基元数组上工作,不在对象上工作
$.map($(data).find('.wikitable tr'), function() {
return $(this).find('td:last').text();
});
非常彻底,我看到了你的第一个答案并检查了它,回来回答它是正确的,我有一个关于空白标题条目的问题,只发现你已经编辑和回答。谈谈读心术吧!干杯,谢谢!他是从另一个维基百科页面下载的。因为它是同一个域,所以这不应该是一个问题。这是正确的Zequ,但是,如果我跨域运行它,会有多大的变化?@ZiNG据我所知,如果您只是在控制台中使用它,您可能无法做到这一点。你可以调查一下。
$(data).find('.wikitable tr').map(function() {
return $(this).find('td:last').text();
$.map($(data).find('.wikitable tr'), function() {
return $(this).find('td:last').text();
});