2017-05-26 120 views
0

我有两个.txt文件,我试图从中创建组合。我试图把每个文件都放到一个数组中,因为每个单词都被换行符隔开。问题是,当我运行$.get时,它不会将任何信息保存到阵列。这里是我的代码:jQuery将文件行存储到数组

<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> 

回答

0

$ .get()是一个AJAX调用,这意味着它是异步的。每当$ .get完成时就会发生data.split()行,而不一定在$ .each块之前。

既然你需要建立两个异步调用,您可以尝试嵌入:

 //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 
      });  
     }); 
0

有你的代码的几个问题。 当您想要依赖多个ajax调用的结果时,可以使用$.when。其中一个方法可以是:

$.when(first, last).then(successCallBackFn, failureCallBackFn); 

何处来自firstlast?那么,他们可以调用$不用彷徨像下面的结果:

var first = $.get('first.txt', function(data){ 
       firstnames = data.split("\n"); 
      }); 

同样last

var last = $.get('last.txt', function(data){ 
       lastnames = data.split("\n"); 
      }); 

最后,使用$。当象下面这样:

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

也。请注意,您需要使用append而不是appendTo在行$("table.results").append

相关问题