我正在尝试使用标准的Visual Studio 2012 MVC4 Internet模板和oAuth工作,但它不会!
所以这里是重新创建的简单步骤。
此时我看到以下错误:
Error when entering login page:
Unhandled exception at line 115, column 5 in http://localhost:63180/Scripts/jquery.unobtrusive-ajax.js
0x800a01b6 - Microsoft JScript runtime error: Object doesn't support property or method 'live'
此时我收到此错误:
ProtocolException was unhandled by user code
No OpenID endpoint found
答案 0 :(得分:4)
错误原因和解决方案
原因是jquery-unobtrusive-ajax.js负责使用jQuery live方法支持ASP.NET MVC中不显眼的ajax。但是这个方法在jQuery 1.7中已被弃用,并且已在1.9中删除。
此方法允许与任何DOM元素相关联的事件存在或将来。
目前用于代替live
的方法是方法on
。
然而,语法有点不同,因为该方法在jQuery上有更多用途。
$ ("form [data-ajax = true].") live ("submit", function (e) { ... }
通过调用live
修改对on
的来电。
对于on
行为,我们碰巧住了on
3个参数:
活动(如直播,将“提交”)
选择器(元素“children”)是基于选择器的,必须始终存在
处理函数(如实时)。
在这种情况下,我们的行看起来像:
$ ("body"). on ("submit", "form [data-ajax = true]", function (e) { ... }
我将选择器移动到on
的第二个参数,并使你成为一个基本的选择器“body”(不是最优的,但我确信总是如此)。
这个想法是最后一个函数与选择器库(正文)中的form [data-ajax = true]
类型的所有当前和未来元素相关联。
对于所有其他生活电话(还有3个),我们进行相同的替换,如下所示:
$ ("body"). on ("click", "form [data-ajax = true]: submit", function (e) { ... }
$ ("body"). on ("click", "a [data-ajax = true]", function (e) { ... }
$ ("body"). on ("click", "form [data-ajax = true] input [type = image]", function (e) { ... }
准备好了!有了这个,我们恢复了ajax功能MVC不引人注目,你的应用程序应该再次正常工作!
翻译自:http://geeks.ms/blogs/etomas/archive/2013/01/18/jquery-1-9-y-el-unobtrusive-ajax-de-asp-net-mvc.aspx
答案 1 :(得分:2)
NuGet中不显眼的库尚未更新,不适用于jQuery 1.9。
请参阅Unobtrusive Ajax stopped working after update jQuery to 1.9.0