Ich habe ein Formular, das Daten an eine Serverseite paged, wo die Daten in eine MySQL-Datenbank eingefügt werden, und dann eine Zeile Anzahl der Datenbank durchgeführt wird und das Ergebnis an die Formularseite zurückgegeben, wo es dann angezeigt wird.Wie verzögere ich eine Ajax-Anfrage?
Ich benutze einen Ajax, um die Zeilenanzahl Daten zu holen und ich frage mich, ob es möglich ist, den Ajax Anruf zu verzögern, bis die Daten in die Datenbank eingefügt wurden, so dass ich eine genaue Zeilenanzahl erhalten kann Daten gerade eingereicht? Der aktuelle Code funktioniert, zeigt jedoch nur eine Zeilenanzahl an, bevor das Formular gesendet wurde. Ich muss die Seite neu laden, um ein echtes Ergebnis zu erhalten.
form.php
<form class="form-inline" action="" id="myform" form="" method="post">
<!-- Text input-->
<div class="form-group">
<label class="col-md-4 control-label" for="name"></label>
<div class="col-md-8">
<input id="name" name="name" type="text" placeholder="name" class="form-control input-lg" required>
</div>
</div>
<!-- Button -->
<div class="form-group">
<label class="col-md-4 control-label" for="submit1"></label>
<div class="col-md-4">
<button id="submitButtonId" name="submit1" class="btn btn-primary btn-xl">Submit</button>
</div>
</div>
</form>
<div id="count"></div>
</div>
Die jquery
<script>
//Post data from form
$(document).ready(function(){
$("#submitButtonId").on("click",function(e){
e.preventDefault();
var formdata = $(this.form).serialize();
$.post('server.php', formdata,
function(data){
//Reset Form
$('#myform')[0].reset();
});
return false;
});
});
</script>
<script>
//Fetch Rowcount from server.php
$(document).ready(function(){
$.ajax({
url: 'data.php',
dataType: "json",
success: function (data) {
$("#count").html(data.count);
}
});
});
</script>
Server.php
<?php
//Connect to db
include_once("db_conx.php");
if(isset($_POST['name'])){
$name= mysqli_real_escape_string($db_conx,$_POST['name']);
//Update Database
$stmt = $db_conx->prepare('INSERT INTO myTable set name=?');
$stmt->bind_param('s',$name);
$stmt->execute();
}
//Count Rows
$sql="SELECT name FROM myTable";
$query = mysqli_query($db_conx, $sql);
// Return the number of rows in result set
$rowcount=mysqli_num_rows($query);
// send output
$my_data=array(count=>"$rowcount");
echo json_encode($my_data,true);
?>
andere Ajax innerhalb einer Erfolgsfunktion hinzufügen .. – santosh
Wenn ich richtig verstehe, wollen Sie noch die Zeilenanzahl auf Seite Last geholt werden, aber aktualisiert, wenn mehr Daten eingefügt? – apokryfos