jQuery ajax başarı geri çağırma işlevi tanımı

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
}
Çözüm

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

Yorumlar (6)

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
Yorumlar (0)

Ben yazardım:

var handleData = function (data) {
    alert(data);
    //do some stuff
}

function getData() {
    $.ajax({
        url : 'example.com',
        type: 'GET',
        success : handleData
    })
}
Yorumlar (1)