Ajax在没有发出警报的情况下无法工作

时间:2018-07-11 08:51:20

标签: javascript jquery html ajax

对我来说,这是一个有点疯狂的情况。因为我的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>

2 个答案:

答案 0 :(得分:1)

x++;在ajax返回之前执行,因此,在执行$('#id_'+x+'').html(data);时,x的值使'#id_'+x不存在。

因此,将x++;后紧跟$('#id_'+x+'').html(data);

答案 1 :(得分:-1)

您可以将async: false放入ajax调用中,默认值为true

参考:http://api.jquery.com/jQuery.ajax/#example-3