SORU
2 HAZİRAN 2009, Salı


jQuery callback içine fazla parametre

Bir şekilde jQuery geri arama fonksiyonu içine daha fazla veri aktarmak için var mı?

İki işlevi var ve geri arama $.post, örneğin, AJAX arama sonuç verileri, yanı sıra birkaç özel bağımsız değişkenler geçirmek için istiyorum

function clicked() {
    var myDiv = $("#my-div");
    // ERROR: Says data not defined
    $.post("someurl.php",someData,doSomething(data, myDiv),"json"); 
    // ERROR: Would pass in myDiv as curData (wrong)
    $.post("someurl.php",someData,doSomething(data, myDiv),"json"); 
}

function doSomething(curData, curDiv) {

}

Bir geri arama gibi sonuç AJAX çağrısından döndürülen kendi parametreleri geçmek mümkün olmak istiyorum.

Teşekkürler!

CEVAP
2 HAZİRAN 2009, Salı


Çözüm kapatılması ile değişkenleri bağlar.

Bu kullanmadım .sonrası jQuery işlevi, ama hızlı belgeleri tarama Ara bir olması gerektiğini öne sürüyor . ben^>işlev işaretçisiaşağıdaki kabul:

function callBack(data, textStatus, jqXHR) {};

Bu nedenle bence çözüm aşağıdaki gibidir:

var doSomething = function(extraStuff) {
    return function(data, textStatus, jqXHR) {
        // do something with extraStuff
    };
};

var clicked = function() {
    var extraStuff = {
        myParam1: 'foo',
        myParam2: 'bar'
    }; // an object / whatever extra params you wish to pass.

    $.post("someurl.php", someData, doSomething(extraStuff), "json");
};

Neler oluyor?

Son satırı, doSomething(extraStuff). ben^>çağrılanve bu çağırma sonucu . ben^>işlev işaretçisi.

extraStuff doSomething bir bağımsız değişken olarak geçirilir çünkü doSomething fonksiyonu kapsamında değildir.

extraStuff doSomething iade anonim iç işlevi başvurulan dış işlev için kapanması ile ilişkilidir. extraStuff argüman. Bu doSomething döndü sonra bile geçerlidir.

Yukarıdaki test etmedim ama son 24 saat içinde çok benzer bir kod yazdım ve tarif ettiğim gibi çalışıyor.

'ExtraStuff' kodlama standartları/kişisel tercihinize bağlı olarak nesne. bir tek yerine elbette birden çok değişken iletebilirsiniz

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • expertvillage

    expertvillag

    5 NİSAN 2006
  • Marques Brownlee

    Marques Brow

    21 Mart 2008
  • Photoshop Training Channel

    Photoshop Tr

    13 Temmuz 2012