代码之家  ›  专栏  ›  技术社区  ›  Stephen M. Redd

是否在完成替换之前调用了ASP.NET MVC AJAX ActionLink OnComplete回调?

  •  0
  • Stephen M. Redd  · 技术社区  · 15 年前

    我有一个相当简单的Ajax动作链接。操作链接的目的是从服务器获取一个局部视图,并用新的内容替换DIV的内容。

    代码看起来像:

    <%= Ajax.ActionLink("click me", "GetThing", 
        new { Mode = "Simple"}, 
        new AjaxOptions { 
            UpdateTargetId = "thingDiv", 
            OnComplete = "completeGetThing"
        })%>
    

    如您所见,操作链接只是用服务器中的新内容替换页面(thingdiv)中DIV标记的内容。

    我还为OnComplete事件调用了一个javascript函数。这里的回调函数需要对加载到thingdiv中的内容执行一些操作。

    下面是我在javascript中所做的简化示例:

    function completeGetThing{
        if($("#thingDiv #subThing").length > -1){
            doOtherThing();
        }
    }
    

    我只是使用jquery从我们正在更新的DIV中获取一个名为“subthing”的元素。

    但我发现,在thingdiv中的html被实际替换之前,oncomplete函数似乎已经启动了…所以当我的回调去寻找“subthing”元素时,它找不到它。

    这是一个非常简单的例子。

    我正在寻找一个很好的建议,建议我如何解决这个问题,或者更好的方法是找个人指出一些我忽略了的事情,这些事情可以完成工作。

    谢谢!

    2 回复  |  直到 15 年前
        1
  •  2
  •   Sly    15 年前

    您可以尝试找出completegething是否实际正在运行(将警报置于此处)。我们遇到了一个问题,最终使用onSuccess事件而不是onComplete。我们正在使用此事件对已加载的表进行着色,它可以正常工作。

        2
  •  1
  •   Ricardo    15 年前

    我使用OnSuccess。和斯莱特一样,它也起作用。