Daha
PHP ile jQuery Ajax POST örneği
Bir formdan bir veritabanına veri göndermeye çalışıyorum. İşte kullandığım form:
<form name="foo" action="form.php" method="POST" id="foo">
<label for="bar">A bar</label>
<input id="bar" name="bar" type="text" value="" />
<input type="submit" value="Send" />
</form>
Tipik yaklaşım formu göndermektir, ancak bu tarayıcının yeniden yönlendirilmesine neden olur. jQuery ve Ajax kullanarak, formun tüm verilerini yakalamak ve bir PHP betiğine göndermek mümkün müdür (bir örnek, form.php)?
652
3
Temel
.ajax
kullanımı aşağıdaki gibi görünecektir:HTML:
jQuery:
Not: jQuery 1.8'den beri
.success()
,.error()
ve.complete()
işlevleri.done()
,.fail()
ve.always()
işlevleri lehine kullanımdan kaldırılmıştır.Not: Yukarıdaki kod parçacığının DOM ready'den sonra yapılması gerektiğini unutmayın, bu nedenle bunu bir
$(document).ready()
işleyicisinin içine koymalısınız (veya$()
kısaltmasını kullanın).İpucu: Geri arama işleyicilerini şu şekilde zincirleyebilirsiniz:
$.ajax().done().fail().always();
PHP (yani, form.php):
*Not: Enjeksiyonları ve diğer kötü amaçlı kodları önlemek için her zaman gönderilen verileri sterilize edin.
Yukarıdaki JavaScript kodunda
.ajax
yerine.post
kısaltmasını da kullanabilirsiniz:Not: Yukarıdaki JavaScript kodu jQuery 1.8 ve üstü ile çalışacak şekilde hazırlanmıştır, ancak jQuery 1.5.'e kadar önceki sürümlerle de çalışmalıdır.
jQuery* kullanarak bir Ajax isteği yapmak için bunu aşağıdaki kodla yapabilirsiniz.
HTML:
JavaScript:
Yöntem 1
Yöntem 2
.success()
,
.error()ve
.complete()geri aramaları *jQuery 1.8* itibariyle kullanımdan kaldırılmıştır. Kodunuzu bunların nihai olarak kaldırılmasına hazırlamak için, bunların yerine
.done(),
.fail()ve
.always()` kullanın.MDN: abort()
. İstek zaten gönderilmişse, bu yöntem isteği iptal eder.Böylece başarılı bir şekilde Ajax isteği gönderdik ve şimdi sıra sunucuya veri göndermeye geldi.
PHP
Bir Ajax çağrısında POST isteği yaptığımız için (
type: "post"
), artık$_REQUEST
veya$_POST
kullanarak veri alabiliriz:POST isteğinde ne elde ettiğinizi basitçe şu şekilde de görebilirsiniz. Bu arada,
$_POST
ayarının yapıldığından emin olun. Aksi takdirde hata alırsınız.Ve veritabanına bir değer ekliyorsunuz. Sorguyu yapmadan önce tüm istekleri (ister GET ister POST yapmış olun) düzgün bir şekilde duyarsızlaştırdığınızdan veya kaçırdığınızdan emin olun. En iyisi hazırlanmış ifadeler kullanmaktır.
Ve herhangi bir veriyi sayfaya geri döndürmek istiyorsanız, bunu aşağıdaki gibi bu veriyi yankılayarak yapabilirsiniz.
Ve sonra onu alabilirsin:
Birkaç kısaltılmış yöntem vardır. Aşağıdaki kodu kullanabilirsiniz. Aynı işi yapar.
serialize kullanabilirsiniz. Aşağıda bir örnek verilmiştir.