Visual Studio MVC 4互联网模板和OpenAuth抛出JS错误
我想要获得标准的Visual Studio 2012 MVC4互联网模板和oAuth工作,但它不会!Visual Studio MVC 4互联网模板和OpenAuth抛出JS错误
所以这里是重新创建的简单步骤。
- 新建MVC4 Inernet应用
- 在包管理器控制台执行:更新包
- 取消注释OAuthWebSecurity.RegisterGoogleClient()文件AuthConfig.cs(我的印象是,谷歌的OAuth确实下所以取消注释这条线在AuthConfig.cs文件将启用它不需要钥匙)
- F5在这一点上,我看到下面的错误运行的应用程序
:
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
错误和的原因解决方案
原因是,jquery -u nobtrusive-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个参数: 事件(如直播,将“提交”) 选择器(元素“孩子”)是基于选择哪些必须始终存在 处理函数(如生活)。
在这种情况下,我们的产品线是这样的:
$ ("body"). on ("submit", "form [data-ajax = true]", function (e) { ... }
我搬到选择器的on
第二个参数,使你成为基本的选择“身体”(不是最优化的,但远我肯定总有)。
的想法是,最后一个功能与是选择基(体)内的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
中的NuGet不显眼的库尚未更新,并且不使用jQuery 1.9工作。
请参阅Unobtrusive Ajax stopped working after update jQuery to 1.9.0
@ da7rutrak thanks!即时通讯不太好管理SO的格式化选项。 –