我正在使用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/

10-12 12:35
查看更多