繁体   English   中英

jQuery将文件行存储到数组

[英]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);

firstlast来自哪里? 好吧,它们可能是调用$ .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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM