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
Çö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
tek bir pdf içine birden fazla pdf dos...
Nasıl "yinelenen OLMADAN birden f...
Nasıl powershell'de bir fonksiyonu bir...
jQuery - Seçme Birden fazla Sınıflar...
Ekleme jQuery ile JavaScript içine met...