Как сбросить счетчик до 0 после обновления Ajax или отправки в базу данных,

#javascript #php #jquery #mysql #ajax

Вопрос:

У меня есть этот код, который отправляет несколько данных в базу данных MySQL с помощью jQuery Ajax, все работает нормально, но когда я пытаюсь обновить страницу с помощью ajax и добавить новую запись, она заполняется количество раз, эквивалентное последнему счетчику.

Ниже приведен мой index.php стр.;

 <div id="sample_table_data">
    <div class="row">
        <div class="panel border-cyan-dark">
            <div class="panel-heading bg-cyan text-white border-cyan-dark">
                    <div class="panel-title">
                        <h4>PHP - Sending multiple forms data through jQuery Ajax</h4>
                  </div>
            </div>
            <div class="panel-body">
                <div style="padding-bottom: 10px;" align="right">
                        <button name="add" id="add" class="btn btn-success btn-sm">
                            <i class="fa fa-plus-square"></i>Add Measures
                        </button>
                </div>
                <form method="POST" id="user_form">
                    <div class="row">
                        <div class="table-responsive margin-bottom-20" >
                            <table class="table table-striped table-bordered table-condensed table-hover" id="user_data">
                                <thead>
                                    <tr>
                                        <th>First Name</th>
                                        <th>Last Name</th>
                                        <th>Details</th>
                                        <th>Remove</th>
                                    </tr>
                                </thead>
                            </table>
                        </div>
                    </div>
                    <div class="row">
                        <input type="submit" name="insert" id="insert" class="btn btn-primary btn-sm" value="Insert">
                    </div>
                </form>
            </div>
        </div>
    </div>
</div>

<!-- Form Dialogue Box -->
<div id="user_dialog">
    <div class="row">
        <div class="col-sm-12">
            <div class="form-group">
                <label>Enter First Name</label>
                <input type="text" name="first_name" id="first_name" class="form-control input-sm">
                <span id="error_first_name" class="text-danger"></span>
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-sm-12">
            <div class="form-group">
                <label>Enter Last Name</label>
                <input type="text" name="last_name" id="last_name" class="form-control input-sm">
                <span id="error_last_name" class="text-danger"></span>
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-sm-12">
            <div class="form-group">
                <input type="hidden" name="row_id" id="hidden_row_id">
                <button type="button" name="save" id="save" class="btn btn-info btn-sm">Save</button>
            </div>
        </div>
    </div>
</div>

<!-- Alert Box -->
<div id="action_alert" title="Action"></div>

<script>  
    $(document).ready(function(){ 
     
        var count = 0;

     $('#user_dialog').dialog({
        autoOpen:false,
        width:800
    });


     $('#add').click(function(){
        $('#user_dialog').dialog('option', 'title', 'Add Data');
        $('#first_name').val('');
        $('#last_name').val('');
        $('#error_first_name').text('');
        $('#error_last_name').text('');
        $('#first_name').css('border-color', '');
        $('#last_name').css('border-color', '');
        $('#save').text('Save');
        $('#user_dialog').dialog('open');
    });

    $('#save').click(function(){

        var error_first_name = '';
        var error_last_name = '';
        var first_name = '';
        var last_name = '';
        if($('#first_name').val() == '') {
             error_first_name = 'First Name is required';
             $('#error_first_name').text(error_first_name);
             $('#first_name').css('border-color', '#cc0000');
             first_name = '';
        } else {
             error_first_name = '';
             $('#error_first_name').text(error_first_name);
             $('#first_name').css('border-color', '');
             first_name = $('#first_name').val();
        } 
        if($('#last_name').val() == '') {
             error_last_name = 'Last Name is required';
             $('#error_last_name').text(error_last_name);
             $('#last_name').css('border-color', '#cc0000');
             last_name = '';
        } else  {
             error_last_name = '';
             $('#error_last_name').text(error_last_name);
             $('#last_name').css('border-color', '');
             last_name = $('#last_name').val();
        }


        if(error_first_name != '' || error_last_name != '') {
             return false;
        
        } else {
             if($('#save').text() == 'Save')
             {
                count  ;
                output = '<tr id="row_' count '">';
                output  = '<td>' first_name ' <input type="hidden" name="hidden_first_name[]" id="first_name' count '" class="first_name" value="' first_name '" /></td>';
                output  = '<td>' last_name ' <input type="hidden" name="hidden_last_name[]" id="last_name' count '" value="' last_name '" /></td>';
                output  = '<td><button type="button" name="view_details" class="btn btn-warning btn-xs view_details" id="' count '">View</button></td>';
                output  = '<td><button type="button" name="remove_details" class="btn btn-danger btn-xs remove_details" id="' count '">Remove</button></td>';
                output  = '</tr>';
                $('#user_data').append(output);
            }
            else
            {
                var row_id = $('#hidden_row_id').val();
                output = '<td>' first_name ' <input type="hidden" name="hidden_first_name[]" id="first_name' row_id '" class="first_name" value="' first_name '" /></td>';
                output  = '<td>' last_name ' <input type="hidden" name="hidden_last_name[]" id="last_name' row_id '" value="' last_name '" /></td>';
                output  = '<td><button type="button" name="view_details" class="btn btn-warning btn-xs view_details" id="' row_id '">View</button></td>';
                output  = '<td><button type="button" name="remove_details" class="btn btn-danger btn-xs remove_details" id="' row_id '">Remove</button></td>';
                $('#row_' row_id '').html(output);
            }
     
          $('#user_dialog').dialog('close');   
       }
});

    
    $(document).on('click', '.view_details', function(){
        var row_id = $(this).attr("id");
        var first_name = $('#first_name' row_id '').val();
        var last_name = $('#last_name' row_id '').val();
        $('#first_name').val(first_name);
        $('#last_name').val(last_name);
        $('#save').text('Edit');
        $('#hidden_row_id').val(row_id);
        $('#user_dialog').dialog('option', 'title', 'Edit Data');
        $('#user_dialog').dialog('open');
    });


    $(document).on('click', '.remove_details', function(){
        var row_id = $(this).attr("id");
        if(confirm("Are you sure you want to remove this row data?")) {
         $('#row_' row_id '').remove();
         }  else  {
             return false;
         }
    });
    
    $('#action_alert').dialog({
        autoOpen:false
    });

    
    $('#user_form').on('submit', function(event){
        event.preventDefault();
        var count_data = 0;
        $('.first_name').each(function(){
         count_data = count_data   1;
     });
        if(count_data > 0)
        {
         var form_data = $(this).serialize();
         $.ajax({
            url:"pages/insert.php",
            method:"POST",
            data:form_data,
            success:function(data)
            {
             $('#user_data').find("tr:gt(0)").remove();
            count =0;
             $('#action_alert').html('<p>Data Inserted Successfully</p>');
             $('#action_alert').dialog('open');
            }
        })
     }
     else
     {
         $('#action_alert').html('<p>Please Add atleast one data</p>');
         $('#action_alert').dialog('open');
     }
    });
    


 });
</script>
 

и это мое insert.php код

 <?php

//insert.php

$connect = new PDO("mysql:host=localhost;dbname=test", "root", "****");

$query = "
INSERT INTO tbl_sample 
(first_name, last_name) 
VALUES (:first_name, :last_name)
";

for($count = 0; $count<count($_POST['hidden_first_name']); $count  )
{
 $data = array(
  ':first_name' => $_POST['hidden_first_name'][$count],
  ':last_name' => $_POST['hidden_last_name'][$count]
 );
 $statement = $connect->prepare($query);
 $statement->execute($data);
}

?>
 

Пожалуйста, помогите мне, как я могу сбросить счетчик до 0 после обновления Ajax. Спасибо.

Комментарии:

1. Не могли бы вы, пожалуйста, сказать мне, что вы подразумеваете под обновлением Ajax?

2. @SubhashisPandey У меня есть эта кнопка [<контейнер данных кнопки=»#основные» данные-действие=»перезагрузка» скрытый=»истинный» идентификатор=»перезагрузка» имя=»перезагрузка»><контейнер данных кнопки=»#основные» данные-действие=»перезагрузка» скрытый=»истинный» идентификатор=»перезагрузка» имя=»перезагрузка»></кнопка>], которая содержит этот код javacript [document.getElementById («перезагрузка»). нажмите();] Это делается для перезагрузки некоторой части страницы без необходимости перезагрузки всей страницы. Поэтому после перезагрузки с помощью этой кнопки счетчик не сбрасывается. Его сбрасывают только при перезагрузке всей страницы, чего я избегаю, так как все остальные компоненты хорошо загружаются с этой опцией,

Ответ №1:

поместите счетчик var рядом с $(документ)

  var count = 0;
 $(document).ready(function(){ 
 
 

и в вашей функции отправки

 $('#user_form').on('submit', function(event){
    event.preventDefault();
    var count_data = 0;
    $('.first_name').each(function(){
     count_data = count_data   1;
 });
    if(count_data > 0)
    {
     var form_data = $(this).serialize();
     $.ajax({
        url:"pages/insert.php",
        method:"POST",
        data:form_data,
        success:function(data)
        {
         $('#user_data').find("tr:gt(0)").remove();
         $('#action_alert').html('<p>Data Inserted Successfully</p>');
         $('#action_alert').dialog('open');
        }
        count =0;
    })
 }
 else
 {
     $('#action_alert').html('<p>Please Add atleast one data</p>');
     $('#action_alert').dialog('open');
 }
});
 

и кроме того, вы должны использовать .prop вместо .attr

Комментарии:

1. Спасибо за ваши усилия, но я, кажется, не вижу никаких изменений, когда ставлю var count = 0; снаружи

2. пожалуйста, проверьте обновление. работает ли ваша функция «успех:функция»? потому что ваш insert.php ничего не вернула.