2016-08-02 4 views
0

Ich bin neu in PHP und Ajax Dinge. Ich möchte wissen, dass es möglich ist, eine Variable von einer Ajax-Erfolgsfunktion an ein anderes Ajax-Datenfeld zu übergeben. Im Folgenden sind zwei Ajax-Aufrufe.Variable von einer Ajax-Funktion zu einer anderen Ajax-Funktion übergeben

$("#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); 

}); 

}); 

Bei der ersten Erfolgsfunktion geben Sie clientName zurück. Jetzt möchte ich diesen clientName in der insert.php durch den zweiten Ajax-Aufruf senden. Der zweite Ajax-Ruf ist wie folgt:

$("#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}); 
}); 

});

Dies ist insert.php. ist es in Ordnung oder mache ich etwas falsch?

<?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

Warum brauchen Sie 2 Ajax Anrufe? – madalinivascu

+0

als 1. Ajax Anruf speichern Daten auf SQL und danach auf der gleichen Chat div Ich möchte Einrichtung für Chat –

+0

so die Chat-Taste erscheint, nachdem der erste Ajax abgeschlossen ist? – madalinivascu

Antwort

0

Hier gibt es 2 Ansätze:

  1. den Wert in einem versteckten HTML-Feld auf den ersten Aufruf Erfolg benötigt Set und dann es in den nächsten Anruf Ajax

  2. Speichern Sie den Wert erhalten in einer globalen Javascript-Variable, die Sie innerhalb der ersten Ajax Anruf dann in den zweiten Anruf

setzen
+0

Ich habe den zweiten Schritt gemacht, aber es funktioniert nicht. –

+0

Sind Sie sicher, dass der zweite Anruf bis zum ersten Anruf wartet? Bitte posten Sie Ihren Ansatz – KAD

1

erstellen verdeckte Eingabe/benutzerdefinierte Attribute und den Namen dort speichern, wenn die erste Ajax abgeschlossen ist, Sie den Chat dann angezeigt werden, auf dem zweiten Ajax-Aufruf verweisen Sie nur, dass verdeckte Eingabe/benutzerdefinierten Wert Attribut

0

Der einfachste Weg ist verwenden, um eine globale Variable und setzen sie den Wert auf den Wert Erfolg und es dann in dem zweiten ajax-Aufruf verwenden, wie unten:

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; 

    }); 

}); 

nun diesen Variable Wert in der zweiten ajax-Aufruf verwenden:

//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}); 
    }); 
}); 

Ein andere Lösung wäre, ein Datenattribut für die „#chat_send_btn“ von dem ersten Ajax-Aufruf mit dem erforderlichen Datenwert-Taste zu setzen und es dann in der zweiten Ajax-Aufruf verwenden:

//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); 

}); 

Und es dann in der zweiten AJAX verwenden $('#chat_send_btn').data('clientName');

Verwandte Themen