我有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>
我的问题是我的表是空的,直到两个函数都完成。
怎么了?
答案 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不同步。