【问题标题】:ASP.NET MVC Ajax ActionLink OnComplete callback invoked before replace is done?在替换完成之前调用 ASP.NET MVC Ajax ActionLink OnComplete 回调?
【发布时间】:2009-09-30 04:32:42
【问题描述】:

我有一个相当简单的 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”的元素。

但我发现 OnComplete 函数似乎在 thingDiv 中的 HTML 被实际替换之前触发了......所以当我的回调去寻找“subThing”元素时,它没有找到它。

这是我正在做的一个非常简单的例子。

我正在寻找关于如何解决这个问题的好建议,或者更好的是有人指出我忽略的可以完成工作的东西。

谢谢!

【问题讨论】:

    标签: asp.net jquery asp.net-mvc


    【解决方案1】:

    您可以尝试查看 completeGetThing 是否实际正在运行(在此处设置警报)。我们遇到了一个问题,最终使用了 OnSuccess 事件而不是 OnComplete。我们正在使用此事件为加载的表格着色,它可以工作。

    【讨论】:

    • 好的,我做了更多检查,似乎事件的触发顺序与我预期的不同。在测试中,似乎 OnSuccess 在 OnComplete 之后触发。感谢您为我指明正确的方向。
    【解决方案2】:

    我使用 OnSuccess。与 Sly 相同,并且有效。

    【讨论】:

    • 感谢 ricardonns 的帮助。我给了 sly 答案标志,因为我是第一个回答的,但是您对答案的确认非常有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 2013-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多