将jquery升级到1.9.1后,Ajax.Actionlink onsuccess脚本停止工作

时间:2014-08-04 12:34:35

标签: javascript jquery ajax asp.net-mvc razor

我用jQuery版本1.8.2& jquery-ui 1.8.24。我有以下ajax.actionlink: -

@Ajax.ActionLink("Show Routers", "RackRouter","Rack", new {
id = Model.Rack.TMSRackID

}, new AjaxOptions {
 InsertionMode = InsertionMode.Replace,
 UpdateTargetId = "RackDetails"  ,
 LoadingElementId = "progress",
  OnSuccess="detailsuccess"
}) 

以及在单独的脚本文件中加载的以下函数: -

function detailsuccess(data) {

        if (data.IsSuccess == "Unauthorized") {
            jAlert(data.description, 'Unauthorized Access');
        }
}

以上运作良好。但我将我的jQuery从1.8.2升级到1.9.1,当我点击上面的ajax.actionlink时,我使用firebug得到以下错误: -

ReferenceError: detailsuccess is not defined jquery.unobtrusive-ajax.js line 22 > Function:1

那么为什么我的ajax.actionlink在从1.8.2升级到1.9.1之后找不到detailsuccess脚本? 感谢

1 个答案:

答案 0 :(得分:2)

如果您查看1.9.1的release documentation,您会看到以下内容

  

自jQuery 1.7以来,.live()方法已被弃用   在1.9中删除。我们建议升级代码以使用.on()方法   代替。

问题在于你的不引人注意 - ajax在其代码而不是on()事件中都有live()事件。您可以通过降级jQuery或升级unobtrusive.ajax脚本来解决这个问题。

我相信可以以nuget包

的形式找到更新版本here

希望这有帮助