Bir sunucudan veri almak için jQuery ajax kullanmak istiyorum.
Success callback fonksiyon tanımını aşağıdaki gibi .ajax()
bloğunun dışına koymak istiyorum. Peki success callback'ten dönen veriyi kullanabilmem için dataFromServer
değişkenini aşağıdaki gibi mi tanımlamam gerekiyor?
Çoğu kişinin başarı geri çağrısını .ajax()
bloğunun içinde tanımladığını gördüm. Peki başarı geri çağrısını dışarıda tanımlamak istersem aşağıdaki kod doğru olur mu?
var dataFromServer; //declare the variable first
function getData() {
$.ajax({
url : 'example.com',
type: 'GET',
success : handleData(dataFromServer)
})
}
function handleData(data) {
alert(data);
//do some stuff
}
Sadece kullan:
function getData() {
$.ajax({
url : 'example.com',
type: 'GET',
success : handleData
})
}
Success` özelliği yalnızca bir fonksiyona referans gerektirir ve verileri bu fonksiyona parametre olarak iletir.
handleDatafonksiyonunuza bu şekilde erişebilirsiniz, çünkü
handleData` bildirilmiştir. JavaScript kodunuzu çalıştırmadan önce fonksiyon bildirimleri için ayrıştırır, böylece fonksiyonu asıl bildirimden önceki kodda kullanabilirsiniz. Bu hoisting olarak bilinir.
Ancak bu, bu şekilde bildirilen işlevler için geçerli değildir:
var myfunction = function(){}
Bunlar yalnızca yorumlayıcı bunları geçtiğinde kullanılabilir.
Fonksiyon bildirmenin 2 yolu hakkında daha fazla bilgi için bu soruya bakın
Başarı işleyicinizi şu şekilde yeniden yazmayı deneyin:
success : handleData
ajax yönteminin success özelliği yalnızca bir işleve referans gerektirir.
handleData işlevinizde en fazla 3 parametre alabilirsiniz:
object data
string textStatus
jqXHR jqXHR