将变量从一个ajax函数传递给另一个ajax函数

时间:2016-08-02 05:13:58

标签: php jquery ajax

我是php和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中发送这个clientName。第二个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";}
?>

3 个答案:

答案 0 :(得分:1)

创建一个隐藏的输入/自定义属性,并在第一个ajax完成后保存名称,然后显示聊天,在第二个ajax调用中,您只需引用隐藏的输入/自定义属性值

答案 1 :(得分:0)

以下是两种方法:

  1. 在首次调用成功时设置隐藏html字段中所需的值,然后 在下一个Ajax调用中获取它

  2. 将值存储在您在其中设置的全局javascript变量中     首先是ajax调用然后在第二次调用中捕获

答案 2 :(得分: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);

});

然后使用$('#chat_send_btn').data('clientName');

在第二个ajax中使用它