对我来说,这是一个有点疯狂的情况。因为我的AJAX代码没有警报就不会执行。如果禁用警报,则不会将数据添加到表数据的选择框中。
jQuery代码
$(document).ready(function () {
x=0;
$(document).on('click', '.add', function () {
var grade = $('#txt-class-search').val();
var subgrade = $('#txt_sub_class_search').val();
var exam_index=$('#exam-index1').val();
var html = '';
html += '<tr class="append-class" >';
html += '<td><select id="id_'+x+'" title="stu_name" name="stu_index[]" class="form-control stu_name" style="height:35px"></select></td>';
html += '<td><input type="text" name="marks[]" class="form-control stu_marks" style="height:35px" /><input type="hidden" name="exam_index" class="exam" value="'+exam_index+'"></td>';
html += '<td style="text-align:center">\n\
<button type="button" name="remove" class="btn btn-danger btn-sm remove"><span class="glyphicon glyphicon-minus"></span></button></td>\n\
</tr>';
$('#item_table').append(html);
$.ajax({
url: "../../../svr/student/exam-stu-name-search.php",
method: "POST",
data: {grade: grade, subgrade: subgrade},
dataType: "text",
success: function (data) {
$('#id_'+x+'').html(data);
//$('#hello').html(data);
}
});
alert();
x++;
});
});
这是与jquery相关的HTML代码。动态行是由jquery添加的。第一个表数据包含选择框,并使用AJAX从数据库检索数据。它根本不需要警报。但是,如果删除了警报,则将不会执行AJAX部分。
<div class="row">
<div class="col-md-2"></div>
<div class="col-md-8">
<form method="post" id="marks-form">
<div class="table-repsonsive">
<span id="error"></span>
<table class="table table-bordered" id="item_table">
<thead>
<tr>
<th style="text-align:center">Student Name</th>
<th style="text-align:center">Marks</th>
<th style="text-align:center"><button type="button" name="add" class="btn btn-success btn-sm add"><span class="glyphicon glyphicon-plus"></span></button></th>
</tr>
</thead>
<tbody class="tbody-class">
</tbody>
</table>
<div align="center">
<input type="submit" name="submit" class="btn btn-info" value="Insert" />
</div>
</div>
</form>
</div>
<div class="col-md-2"></div>
</div>
答案 0 :(得分:1)
x++;
在ajax返回之前执行,因此,在执行$('#id_'+x+'').html(data);
时,x
的值使'#id_'+x
不存在。
因此,将x++;
后紧跟$('#id_'+x+'').html(data);
答案 1 :(得分:-1)
您可以将async: false
放入ajax调用中,默认值为true