jQuery / Javascript代码是否逐行执行?

时间:2016-01-05 15:07:34

标签: javascript jquery arrays

我有这段代码

    var customer_number = $("#customer_number").val();
    var data = <?php if(isset($questions)) {echo $questions; } else {echo '"";';} ?> 
    var records = [];

    $.each(data, function(key,value) {
        $.ajax({
            url: "api/suppression/checkifsuppressed", 
            type: 'GET',
            data: {'customer_number':customer_number, 'columnheader' : value.columnheader},
            success: function(result){
            if(parseInt(result) >= 1)
            {
                data.splice(key , 1);
            }
        }});
    });

    $.each(data, function(key,value) {
        records.push({
            agebracket: value.agebracket,
            agerestriction: value.agerestriction,
            child_count: value.child_count,
            child_enable_response: value.child_enable_response,
            child_sort_num: value.child_sort_num,
            columnheader: value.columnheader,
            costperlead: value.costperlead,
            created_at: value.created_at,
            deliveryassignment: value.deliveryassignment,
            id: value.id,
            is_child: value.is_child,
            isenabled: value.isenabled,
            ownhomeoptions: value.ownhomeoptions,
            ownhomerestriction: value.ownhomerestriction,
            parent_colheader: value.parent_colheader,
            po_num: value.po_num,
            postcodeexclusion: value.postcodeexclusion,
            postcodeinclusion: value.postcodeinclusion,
            postcoderestriction: value.postcoderestriction,
            question: value.question,
            sortorder: value.sortorder,
            telephoneoptions: value.telephoneoptions,
            telephonerestriction: value.telephonerestriction,
            updated_at: value.updated_at,
            parent_enable_response: value.parent_enable_response,
            child_lead_respponse: value.child_lead_respponse,
        });
    });

    console.log("The new data is..");
    console.log(data);

    console.log("The new records is..");
    console.log(records);

我正在做的是我有变量data,其中包含内容,让我们说两条记录。正如你所看到我有两个$.each循环我的问题是,那两个循环是否同时被执行?我在第一个$.each中拥有的是我循环所有data的记录然后为每个记录我正在进行ajax调用以检查数据库中的某些内容,如果数据库返回1或大于1我将删除data数组中的当前数据。所以我做了一个测试。

data有两个记录,并且将满足第一个$.each中的条件,该条件将删除数组中的一个数据。

然后在我的第二个$.each中,我只是在其中获取data变量循环,无论其内容如何,​​我只是将其复制到我的records数组中。但是当我运行代码时,我得到了这个

enter image description here

正如您所看到的,data现在有1条我预期的记录,因为它满足第一循环中的一个条件。但是在我的records数组的结果中,为什么它仍然有2条记录呢?它是否获得了data的原始值,其中包含两条记录?它应该是1,因为在第一个循环中我已经修改了data数组?此代码将在页面加载时运行。

我是jQuery的新手。

0 个答案:

没有答案