Javascript 我正在尝试刮取一些数据并将其导出到CSV
我正在尝试收集一些数据并将其导出到CSV 我不需要CSV部分的帮助,但我遇到的问题是从$.get()方法中获取变量 我会使用.done()吗。成功()?我不太清楚该怎么办。我尝试了.done()(据我所知),但没有成功Javascript 我正在尝试刮取一些数据并将其导出到CSV,javascript,jquery,Javascript,Jquery,我正在尝试收集一些数据并将其导出到CSV 我不需要CSV部分的帮助,但我遇到的问题是从$.get()方法中获取变量 我会使用.done()吗。成功()?我不太清楚该怎么办。我尝试了.done()(据我所知),但没有成功 $.get(link, function(response) { var nohover = $(response).find('#row-nohover').find("a"); var total = "country;avg_temp;high_temp;l
$.get(link, function(response) {
var nohover = $(response).find('#row-nohover').find("a");
var total = "country;avg_temp;high_temp;low_temp;precipitation\n";
for (var i = 0, len = nohover.length; i < len; i++) {
var newLink = nohover[i].getAttribute("href");
newLink = "http://www.domain.com" + newLink;
$.get(newLink, function(response2) {
var countryName = $(response2).find("#left-content").find("#headerfont").text();
countryName = countryName.toLowerCase();
countryName = capitalizeFirstLetter(countryName);
//console.log($(response2).find("tbody:eq(2)").children());
var avgTemp = $(response2).find("tbody:eq(2)").children()[1];
var highTemp = $(response2).find("tbody:eq(2)").children()[2];
var lowTemp = $(response2).find("tbody:eq(2)").children()[3];
var precip = $(response2).find("tbody:eq(2)").children()[4];
avgTemp = $(avgTemp).children()[1].innerHTML;
highTemp = $(highTemp).children()[1].innerHTML;
lowTemp = $(lowTemp).children()[1].innerHTML;
precip = $(precip).children()[1].innerHTML;
total += countryName + ";" + avgTemp + ";" + highTemp + ";" + lowTemp + ";" + precip + "\n";
console.log(total);
});
}
});
$.get(链接、函数(响应){
var nohover=$(响应).find('row nohover').find(“a”);
var total=“国家;平均温度;高温;低温;降水量\n”;
对于(变量i=0,len=nohover.length;i
基本上,我希望在循环完成后获得
total
变量。我该怎么做?您在一个循环中发出多个请求。您应该考虑将这些请求存储到某种结构中,这种结构可以让您知道何时所有请求都已成功完成
查看jQuery延迟函数。
i
将递增到len-1
,而无需等待内部AJAX请求完成。因此,您需要一个非i
的变量,该变量在内部AJAX请求的回调中递增
i、 e
for(var i=0,processed=0,len=nohover.length;i
您的数据结构有各种各样的问题。你应该使用一个对象数组:[{countryName:“US”,avgTemp:70,highTemp:101,lowttemp:0,precip:75},…]
你的可能比另一个更正确,但我还没有完全掌握承诺和延迟对象,所以现在我不得不使用另一个答案。
for (var i = 0, processed = 0, len = nohover.length; i < len; i++) {
....
$.get(newLink, function(response2) {
....
console.log(total);
processed++;
if(processed === len -1) {
// all done, you can use "total" now
}
});
}