2016-08-02 114 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');

相关问题