关于jquery.unobtrusive-ajax.js 回调函数无效 的解决办法

今天新项目的时候写MVC的时候使用到了Ajax.BeginForm,发现它的回调函数怎么都不响应,最后在网上查找了相关资料跟自己写的一些代码测试,

总算找到了原因:jquery.unobtrusive-ajax.js内部会使用到jquery的live()方法,而引入高版本的jquery已经移除了live()的方法。

 

解决方式有2个

    ①:引入支持live()方法的jquery版本

    ②: 查找jquery.unobtrusive-ajax.js中的live关键字 (有4个)  将live关键字替换成on   使用高版本jquery的on()方法。

         并将脚本语言放到文档底部运行即可(注意一定要在文档底部运行!!!)。

        如果不想在文档底部运行JS,则需要修改jquery.unobtrusive-ajax.js内部刚刚替换的on方法绑定方式

        例:  替换完后live之后 on方法为

$("form[data-ajax=true]").on("submit", function (evt) {

      var clickInfo = $(this).data(data_click) || [];

       evt.preventDefault();

 if (!validate(this)) {

return;

}

asyncRequest(this, {

url: this.action,

type: this.method || "GET",

data: clickInfo.concat($(this).serializeArray())

});

});

需要更改为:

$(document).on("submit", "form[data-ajax=true]",function (evt) {

      var clickInfo = $(this).data(data_click) || [];

       evt.preventDefault();

 if (!validate(this)) {

return;

}

asyncRequest(this, {

url: this.action,

type: this.method || "GET",

data: clickInfo.concat($(this).serializeArray())

});

});

以上就是问题以及解决方案,如有不对的地方,欢迎评论指正。

posted @ 2017-06-14 18:23  owl_code  阅读(294)  评论(0编辑  收藏  举报