jQuery在第一个之后完成一个函数

时间:2014-05-10 23:05:39

标签: javascript jquery

我有2个选择框多个。在2个选择框中选择选项后,我需要添加带有输入到表的行,并且只有在将行添加到表之后,我才需要运行ajax查询以使用相关数据填充每个输入。 这是我的代码:

$("#items, #sites").change(function () {
    var itemsCount = $('#items option:selected').length;
    var sitesCount = $('#sites option:selected').length;
    if (sitesCount > 0 && itemsCount > 0){
        popTable(itemsCount, sitesCount);
        getZicouiData();
    }
});

function popTable(itemsCount, sitesCount){
    $('#cutbacks > tbody').empty();
    var row = '';
    $('#items option:selected').each(function(){
        var item_id = $(this).val();
        row +='<tr>';
        row += '<td rowspan="'+sitesCount+'">'+$(this).text()+'</td>';
        var site_i = 0;
        $('#sites option:selected').each(function(){
            var site_id = $(this).val();
            if(site_i != 0){
                row +='<tr>';
            }
            row += '<td>'+$(this).text()+'</td><td><input type="text" class="form-control waiting" data-site-id="'+site_id+'" data-item-id="'+item_id+'" value="מעדכן נתונים"/></td>';
            row += '</tr>';
            site_i ++
        });
    });
    $('#cutbacks > tbody').append(row);
}
function getZicouiData(){
    $('.waiting').each(function(){
        var item_id = $(this).attr('data-item-id');
        var site_id = $(this).attr('data-site-id');
        url = '{{url('/')}}/sales/item_by_sale/'+item_id+'/'+site_id;
        ordered_items = $.getData(url).total;
        $(this).val(ordered_items);
    });
}
jQuery.extend
(
    {
        getData: function(url)
        {
            var result = null;
            $.ajax(
                {
                    url: url,
                    type: 'get',
                    dataType: 'json',
                    async: false,
                    cache: false,
                    success: function(data)
                    {
                        result = data;
                    }
                }
            );
           return result;
        }
    }
);

这里是我的HTML:

<select id='items' class='items' multiple>
    <option value='1'>1</option>
    <option value='2'>2</option>
    <option value='3'>3</option>
</select>
<select id='sites' class='sites' multiple>
    <option value='1'>1</option>
    <option value='2'>2</option>
    <option value='3'>3</option>
</select>
<table id='cutbacks' class='table'>
    <tbody></tbody>
</table>

我的问题是我的表是空的,直到两个函数都完成。

怎么了?

1 个答案:

答案 0 :(得分:0)

感谢@ jfriend00我找到了解决方案:

这里是固定代码:

function getZicouiData(){
    $('.waiting').each(function(){
        var item_id = $(this).attr('data-item-id');
        var site_id = $(this).attr('data-site-id');
        var $this = $(this);
        url = '{{url('/')}}/sales/item_by_sale/'+item_id+'/'+site_id;
        $.ajax(
            {
                url: url,
                type: 'get',
                dataType: 'json',
                // async: false,
                cache: false,
                success: function(data)
                {
                    $this.val(data.total);
                }
            }
        );
    });
}

我的错误是因为ajax不同步。