2016-08-02 113 views
0

我是新來的php和ajax的東西。我想知道是否可以將一個變量從一個ajax成功函數傳遞到另一個ajax數據字段。以下是兩個ajax調用。將變量從一個ajax函數傳遞給另一個ajax函數

$("#submit_btn").on("click",function(e) { 
    $.ajax({ 
    url: "./script.php", 
    type: 'POST', 
    data: { 
     name: $('#clientName').val(), 
     email: $('#clientEmail').val(), 
     question: $("#quiz").val() 
    } 
}).done(function(data){ 
     //alert(data); 
     //console.log(data); 

}); 

}); 

第一次成功函數返回clientName。現在我想通過第二個Ajax調用在insert.php中發送此客戶端名稱。第二個Ajax調用如下:

$("#chat_send_btn").on("click",function(e) { 
    $.ajax({ 
    url: "./insert.php", 
    type: 'POST', 
    data: { 
      textarea:$('#hidden_textarea').val(document.getElementById('text_area').innerHTML), 
      customerName: data 
    } 

}).done(function(data){ 
    $('html, div').animate({scrollTop: $('#chat_messages_area').height()+5000}); 
}); 

});

這是insert.php。是好的還是我做錯了什麼?

<?php 
session_start();  
require 'connect.php'; 
$uname =''; 
$msg = ''; 
$tableName= "logs"; 
if(isset($_POST['textarea']) && isset($_POST['data'])) 
{ 
    $msg = $_POST['textarea']; 
    $uname = $_POST['data']; 
    $sql_insertquery = "INSERT INTO `logs` (`msgID`, `username`, `msg`) VALUES (NULL, '$uname', '$msg');"; 
    $sth = $conn->query($sql_insertquery); 
    $sql_selectquery = "SELECT * FROM logs"; 

} 
else{echo "error";} 
?> 
+1

爲什麼你需要2個Ajax調用? – madalinivascu

+0

作爲第一ajax調用保存數據到sql,然後在同一個聊天div我想提供聊天 –

+0

設施,所以聊天按鈕將出現後第一個Ajax完成? – madalinivascu

回答

0

這裏是2點的方法:

  1. 設置在第一個呼叫成功隱藏的HTML場所需的值,然後 獲得它在未來的Ajax調用

  2. 商店的價值在一個全球性的JavaScript變量,你設置在 第一次ajax調用然後趕上第二次調用

+0

我做了第二步,但它沒有工作。 –

+0

你確定第二個電話等到第一個電話完成嗎?請張貼你的方法 – KAD

1

創建一個隱藏的輸入/自定義屬性,並保存名的第一個AJAX完成時,那麼你就顯示在聊天,在第二AJAX調用你剛纔提到隱藏的輸入/自定義屬性值

0

最簡單的方法是使用全局變量,並將其值設置爲成功值,然後用它在第二Ajax調用象下面這樣:

var clientName = ''; 
$("#submit_btn").on("click",function(e) { 
    $.ajax({ 
     url: "./script.php", 
     type: 'POST', 
     data: { 
      name: $('#clientName').val(), 
      email: $('#clientEmail').val(), 
      question: $("#quiz").val() 
     } 
    }).done(function(data){ 

     //alert(data); 
     //console.log(data); 

     //Set the clientName data here 
     clientName = data.clientName; 

    }); 

}); 

現在,在第二AJAX調用使用這個變量值:

//append the clientName data to be sent to second ajax in your data 

$("#chat_send_btn").on("click",function(e) { 
    $.ajax({ 
     url: "./insert.php", 
     type: 'POST', 
     data: {clientName : clientName}, //passed clientName data from first ajax call success 
    }).done(function(data){ 

     $('html, div').animate({scrollTop:$('#chat_messages_area').height()+5000}); 
    }); 
}); 

另一個解決方案是設置爲「#chat_send_btn」按鈕的數據屬性與來自第一AJAX調用所需要的數據值,然後用它在第二AJAX調用:

//first ajax call success code 
.done(function(data){ 

     //alert(data); 
     //console.log(data); 

     //Set the clientName data here 
     $('#chat_send_btn').data('clientName', data.clientName); 

}); 

,然後使用用它在第二AJAX $('#chat_send_btn').data('clientName');

相關問題