簡體   English   中英

如何調用第二個jquery / ajax請求?

[英]How can I call second jquery/ajax request?

好吧,我正在用jquery / ajax請求驗證我的html表單。 add_contact_process.php頁面處理。 在此頁面中,如果退出數據(家庭或給定名稱),那么我將顯示一條消息,其中包含一個值為Yes和Cancel的按鈕。

所以
1)如果按下按鈕,我想調用另一個jQuery / ajax請求,將數據保存到數據庫。
2)如果按下“ 取消”按鈕,則我要刪除/隱藏消息。

有人可以建議我該怎么做嗎?

HTML表單代碼

<form id="addcontact">
<table width="450" border="0" cellspacing="0" cellpadding="0">  
<tr>
    <td>Family name</td>
    <td><input type="text" name="family_name" maxlength="50" placeholder="Family name"/></td>
</tr>
<tr>
    <td>Given name</td>
    <td><input type="text" name="given_name"  maxlength="30"placeholder="Given name"/></td>
</tr>
<tr>
    <td>&nbsp;</td>
    <td><input type="submit" name="submit" value="Add Contact" class="submit"></td>
</tr>
</table>
</form>    

<script>
$("#addcontact").submit(function(event) {
    event.preventDefault();
    $.ajax({
    type: 'POST',
    url: 'add_contact_process.php',
    data: $(this).serialize(),
    dataType: 'json',      

    success: function (data) {
        $('#success').html('');
        $('#success').show();
        $.each( data, function( key, value ) {          
        if(key !== 'error' && key !== 'last_id')  {
           $('#success').append('<p>'+value+'</p>');            
           }  
        }); 

        if( ! data.error) {     
            $('#hide').hide();              
             setTimeout(function () {
             $('input[type=submit]').attr('disabled', false);        
             var last_id = data.last_id;             
             window.location.href = "../index.php?redcdid="+last_id; 
        },     5000); 
            }

       }
      });
    });
$('#success').delay(3000).fadeOut('slow');      
</script>

add_contact_process.php頁面:

<?php
$family_name = inputvalid(ucfirst($_POST['family_name']));
$given_name = inputvalid(ucfirst($_POST['given_name']));

$exitfname = mysqli_query($link, "SELECT family_name FROM contact_details WHERE family_name = '$family_name'");
$numfname = mysqli_num_rows($exitfname);

$exitgname = mysqli_query($link, "SELECT given_name FROM contact_details WHERE given_name = '$given_name'");
$numgname = mysqli_num_rows($exitgname);

$msg =  array();
$msg['error'] = false;

if(empty($family_name)){
    $msg[] = "<div class='error'>Family name required.</div>";  
    $msg['error'] = true;                           
}

if(strlen($given_name) > 30){
    $msg[] = "<div class='error'>Given name is too big.</div>"; 
    $msg['error'] = true;   
}

// If error is not found            
if($msg['error'] === false){
    if(!empty($family_name) && $numfname >= 1 || !empty($given_name) && $numgname >= 1){
        $msg[] = "<div class='error'>A contact with this name exists. Do you wish to continue adding this new contact?                  
        <input type='submit' name='warning' value='yes' id='yes' class='submit' style='margin:0px;'/>&nbsp;
        <input type='submit' name='warning' value='Cancel' id='cancel' class='submit' style='margin:0px;'/>         
        </div>";
        $msg['error'] = true;           
    }else{      
        $query_2 = "INSERT INTO contact_details (family_name, given_name) VALUES('$family_name', '$given_name')";
        $query_2 =  mysqli_query($link, $query_2);
        $last_id =  mysqli_insert_id($link);

        if($query_2){
            $msg[] = "<div class='success'><strong>Successfully added a new contact</strong>. </div>";          
            $msg['last_id'] = "$last_id";
            $another = "close";
        }else{
            $msg[] = "<div class='success'>Sorry we can not add a new contact details. </div>";
            $msg[] .=  mysqli_error();          
            $another = "close";
        }       
    }   
}       
echo  json_encode($msg);        
?>
Call Second ajax within success
          <script>
            $("#addcontact").submit(function(event) {
                event.preventDefault();
                $.ajax({
                type: 'POST',
                url: 'add_contact_process.php',
                data: $(this).serialize(),
                dataType: 'json',      

                success: function (data) {
                    $('#success').html('');
                    $('#success').show();
                    $.each( data, function( key, value ) {          
                    if(key !== 'error' && key !== 'last_id')  {
                       $('#success').append('<p>'+value+'</p>');            
                       }
          /*------------------------------------------------------------------*/  
                       if(confirm('Write your message here')){
                       /* Second ajax after clicking ok on confirm box */
                             $.ajax({
                                url : 'Second URL',
                                method :'POST',
                                data : {'data1':data1}, 
                                success:function(response){
                                        // code after success       
                                },
                                error: function(e){
                                    return false;
                                }
                            });                 
                        }else{
                            $('#success').hide();
                            $('#success').hide();
                        }
        /*----------------------------------------------------------*/

                    }); 

                    if( ! data.error) {     
                        $('#hide').hide();              
                         setTimeout(function () {
                         $('input[type=submit]').attr('disabled', false);        
                         var last_id = data.last_id;             
                         window.location.href = "../index.php?redcdid="+last_id; 
                    },     5000); 
                        }

                   }
                  });
                });

您應該在第一個Ajax調用complete方法中定義第二個Ajax調用。 默認情況下,Ajax調用是異步的,它將以成功方法開始執行代碼或語句,而無需等待服務器的響應。 你編碼我應該這樣嗎

$.ajax({
            type: 'POST',
            url: 'add_contact_process.php',
            data: $(this).serialize(),
            dataType: 'json',      

            success: function (data) {
               // some code            
                   },

            complete:function () {
           //you second ajax call
            }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM