Per effettuare una richiesta Ajax utilizzando jQuery è possibile farlo con il seguente codice.
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:
Metodo 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);
}
});
Metodo 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');
});
Il .success()
, .error()
e .complete()
callback sono deprecati come di jQuery 1.8 . Per preparare il codice per l'eventuale rimozione, utilizzare .done()
,.fail()
e .always()
invece.
MDN: abort()
. Se la richiesta è già stata inviata, questo metodo interromperà la richiesta.
Quindi abbiamo inviato con successo una richiesta Ajax e ora è il momento di prendere i dati sul server.
PHP
Man mano che effettuiamo una richiesta POST in una chiamata Ajax ( type: "post"
), ora possiamo acquisire i dati utilizzando uno $_REQUEST
o $_POST
:
$bar = $_POST['bar']
Puoi anche vedere cosa ottieni nella richiesta POST semplicemente. A proposito, assicurati che $_POST
sia impostato. Altrimenti riceverai un errore.
var_dump($_POST);
// Or
print_r($_POST);
E stai inserendo un valore nel database. Assicurati di sensibilizzare o sfuggire a tutte le richieste (sia che tu abbia fatto GET o POST) correttamente prima di effettuare la query. Il meglio sarebbe usare dichiarazioni preparate .
E se vuoi restituire qualsiasi dato alla pagina, puoi farlo semplicemente facendo eco a quei dati come di seguito.
// 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'));
E poi puoi ottenerlo come:
ajaxRequest.done(function (response){
alert(response);
});
Esistono un paio di metodi stenografici . Puoi usare il codice qui sotto. Fa lo stesso lavoro.
var ajaxRequest= $.post("test.php", values, function(data) {
alert(data);
})
.fail(function() {
alert("error");
})
.always(function() {
alert("finished");
});