[英]jQuery storing files lines to array
我有两个.txt文件,我正在尝试从中创建组合。 我正在尝试获取每个文件并将它们转换成数组,因为每个单词都由换行符分隔。 问题是当我运行$.get
它不会将任何信息保存到数组中。 这是我的代码:
<html>
<head>
<title>Email Validator</title>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
</head>
<body>
<span id="runtime"></span>
<table class="results">
<tr>
<td>First Name</td>
<td>Last Name</td>
</tr>
</table>
<script>
//pull firstnames and store to array
var firstnames = new Array();
$.get('first.txt', function(data){
firstnames = data.split("\n");
});
//pull lastnames and store to array
var lastnames = new Array();
$.get('last.txt', function(data){
lastnames = data.split("\n");
});
var fn, ln;
//firstnames
$.each(firstnames , function(findex, fvalue) {
fn = fvalue;
//lastnames
$.each(lastnames , function(lindex, lvalue) {
ln = lvalue;
$("table.results").appendTo("<tr><td>" + fn + "</td><td>" + ln + "</td></tr>");
});
});
</script>
</body>
</html>
$ .get()是一个AJAX调用,这意味着它是异步的。 每当$ .get完成时(而不一定在$ .each块之前),都会出现data.split()行。
由于您需要进行两个异步调用,因此可以尝试嵌入:
//pull firstnames and store to array
var firstnames = new Array();
var lastnames = new Array();
$.get('first.txt', function(data){
firstnames = data.split("\n");
//pull lastnames and store to array
$.get('last.txt', function(data){
lastnames = data.split("\n");
// Process your two arrays here
});
});
您的代码存在一些问题。 如果要依赖多个ajax调用的结果,可以使用$.when
。 方式之一可能是:
$.when(first, last).then(successCallBackFn, failureCallBackFn);
first
和last
来自哪里? 好吧,它们可能是调用$ .get的结果,如下所示:
var first = $.get('first.txt', function(data){
firstnames = data.split("\n");
});
last
同样。
var last = $.get('last.txt', function(data){
lastnames = data.split("\n");
});
最后,使用$ .when如下所示:
$.when(first, last).then(successCallBackFn, failureCallBackFn);
function successCallBackFn(firstNames, lastNames) {
var fn, ln;
//firstnames
$.each(firstnames, function (findex, fvalue) {
fn = fvalue;
//lastnames
$.each(lastnames, function (lindex, lvalue) {
ln = lvalue;
$("table.results").append("<tr><td>" + fn + "</td><td>" + ln + "</td></tr>");
});
});
}
function failureCallBackFn() {
console.log('failed');
}
也。 请注意,您需要在$("table.results").append
行中使用append
而不是appendTo
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.