2017-05-26 2 views
0

私は、組み合わせを作成しようとしている2つの.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呼び出しで、非同期です。 data.split()行は、$ .getが完了するたびに必ず発生します。必ず$ .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

:あなたは埋め込む試すことができ、2つの非同期呼び出しを行う必要があるので

。 複数のajax呼び出しの結果に依存する場合は、$.whenを使用できます。方法の一つは次のようになります。

firstlastから来るのか
$.when(first, last).then(successCallBackFn, failureCallBackFn); 

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

同様last:まあ、それは以下のように$に.getを呼び出しの結果であり得ます。

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").appendappendToの代わりにappendを使用する必要があることに注意してください。