Aby złożyć żądanie Ajax za pomocą jQuery, możesz to zrobić za pomocą następującego kodu.
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:
Metoda 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);
}
});
Metoda 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');
});
.success()
, .error()
I .complete()
wywołania zwrotne są przestarzałe jak z jQuery 1.8 . Aby przygotować swój kod do ich ostatecznego usunięcia, należy użyć .done()
, .fail()
i .always()
zamiast tego.
MDN: abort()
. Jeśli żądanie zostało już wysłane, ta metoda przerwie żądanie.
Dlatego pomyślnie wysłaliśmy żądanie Ajax, a teraz nadszedł czas, aby pobrać dane na serwer.
PHP
Jak złożyć zamówienie odpowiedzieć w wywołaniu Ajax ( type: "post"
), możemy teraz dane grab pomocą jednej $_REQUEST
lub $_POST
:
$bar = $_POST['bar']
Możesz także zobaczyć, co otrzymujesz w żądaniu POST, po prostu przez. BTW, upewnij się, że $_POST
jest ustawiony. W przeciwnym razie pojawi się błąd.
var_dump($_POST);
// Or
print_r($_POST);
I wstawiasz wartość do bazy danych. Upewnij się, że uwrażliwiasz lub unikasz wszystkich żądań (niezależnie od tego, czy wykonałeś GET czy POST) przed wykonaniem zapytania. Najlepiej byłoby użyć przygotowanych wyciągów .
A jeśli chcesz zwrócić jakiekolwiek dane z powrotem na stronę, możesz to zrobić, po prostu odbierając te dane jak poniżej.
// 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'));
A potem możesz to uzyskać w następujący sposób:
ajaxRequest.done(function (response){
alert(response);
});
Istnieje kilka metod skróconych . Możesz użyć poniższego kodu. Działa tak samo.
var ajaxRequest= $.post("test.php", values, function(data) {
alert(data);
})
.fail(function() {
alert("error");
})
.always(function() {
alert("finished");
});