我正在使用AJAX页面方法,但似乎无法传递所需的参数:
function getFavStatus() {
//favs is a list of DOM <imgs> that I want to modify their img.src attribute
for (i = 0; i < favs.length; i++) {
PageMethods.isFavorite(favs[i].alt,setFavImg(favs[i]));
}
}
function setFavImg(fav, response) {
fav.src = response;
}
我不知道的问题是如何使用PageMethods中的“响应”,并将DOM对象传递给回调函数。
我也尝试过这样做:
function getFavStatus() {
for (i = 0; i < favs.length; i++) {
PageMethods.isFavorite(favs[i].alt, function (response) {
favs[i].src = response;});
);
}
}
在这种情况下,响应正常运行,但是
i
始终是> favs.length
,因为它已经在循环中进行了迭代...编辑:我的PageMethods.isFavorite签名是:
[System.Web.Services.WebMethod]
public static string isFavorite ( string p_id )
谁能指出我正确的方向?
谢谢!
最佳答案
试试看:
PageMethods.isFavorite(favs[i].alt,
function (response, ctx) {
/* success callback */
ctx.src = response;
},
function(response) { /* failed callback */ },
favs[i] /* context */);
上下文将传递给回调,因此您可以将对图像的引用传递给回调,然后在其中的回调中进行设置。
最初的问题是页面方法是异步的,因此直到循环完成后才触发回调。因此,最后一项受到影响。
HTH。
关于javascript - 带参数的回调函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4595270/