Pour effectuer une requête Ajax en utilisant jQuery vous pouvez le faire avec le code suivant.
HTML :
<form id="foo">
<label for="bar">A bar</label>
<input id="bar" name="bar" type="text" value="" />
<input type="submit" value="Send" />
</form>
<!-- The result of the search will be rendered inside this div -->
<div id="result"></div>
JavaScript :
Méthode 1
/* Get from elements values */
var values = $(this).serialize();
$.ajax({
url: "test.php",
type: "post",
data: values ,
success: function (response) {
// You will get response from your PHP page (what you echo or print)
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
}
});
Méthode 2
/* Attach a submit handler to the form */
$("#foo").submit(function(event) {
var ajaxRequest;
/* Stop form from submitting normally */
event.preventDefault();
/* Clear result div*/
$("#result").html('');
/* Get from elements values */
var values = $(this).serialize();
/* Send the data using post and put the results in a div. */
/* I am not aborting the previous request, because it's an
asynchronous request, meaning once it's sent it's out
there. But in case you want to abort it you can do it
by abort(). jQuery Ajax methods return an XMLHttpRequest
object, so you can just use abort(). */
ajaxRequest= $.ajax({
url: "test.php",
type: "post",
data: values
});
/* Request can be aborted by ajaxRequest.abort() */
ajaxRequest.done(function (response, textStatus, jqXHR){
// Show successfully for submit message
$("#result").html('Submitted successfully');
});
/* On failure of request this function will be called */
ajaxRequest.fail(function (){
// Show error
$("#result").html('There is error while submit');
});
El .success()
, .error()
y .complete()
sont dépréciés à partir de jQuery 1.8 . Pour préparer votre code à leur suppression éventuelle, utilisez la fonction .done()
, .fail()
y .always()
à la place.
MDN: abort()
. Si la demande a déjà été envoyée, cette méthode interrompt la demande.
Nous avons donc réussi à envoyer une requête Ajax, et il est maintenant temps de récupérer les données sur le serveur.
PHP
Comme nous faisons une requête POST dans un appel Ajax ( type: "post"
), nous pouvons maintenant saisir les données en utilisant soit $_REQUEST
ou $_POST
:
$bar = $_POST['bar']
Vous pouvez également voir ce que vous obtenez dans la requête POST en faisant simplement l'un ou l'autre. BTW, assurez-vous que $_POST
est réglé. Sinon, vous obtiendrez une erreur.
var_dump($_POST);
// Or
print_r($_POST);
Et vous insérez une valeur dans la base de données. Assurez-vous que vous êtes sensibilisation ou échapper à Toutes les requêtes (que vous ayez fait un GET ou un POST) correctement avant de faire la requête. Le mieux serait d'utiliser déclarations préparées .
Et si vous voulez renvoyer des données à la page, vous pouvez le faire en faisant simplement écho à ces données comme ci-dessous.
// 1. Without JSON
echo "Hello, this is one"
// 2. By JSON. Then here is where I want to send a value back to the success of the Ajax below
echo json_encode(array('returned_val' => 'yoho'));
Et puis tu peux l'obtenir comme :
ajaxRequest.done(function (response){
alert(response);
});
Il y a un couple de méthodes abrégées . Vous pouvez utiliser le code ci-dessous. Il fait le même travail.
var ajaxRequest= $.post("test.php", values, function(data) {
alert(data);
})
.fail(function() {
alert("error");
})
.always(function() {
alert("finished");
});
4 votes
Ver méta-discussion connexe pour le raisonnement derrière la non-délétion.
1 votes
Une solution simple de vanilla js : stackoverflow.com/a/57285063/7910454