我正在研究Scott Allen的Pluralsite上的ode-to-food MVC4演示应用程序,并且在启用ajax调用时遇到了麻烦的错误。我认为这可能与我最近的jquery版本有关,但不确定。
当我取消注释以下行以激活ajax调用时,我得到Microsoft JScript运行时错误,否则它可以正常工作:
$('form[data-ucw-ajax="true"]').submit(ajaxFormSubmit);
错误是:
Unhandled exception at line 4411, column 2 in http://localhost:17471/Scripts/jquery-1.9.0.js
0x800a139e - Microsoft JScript runtime error: Syntax error, unrecognized expression:
<div class="wrapper clearfix">
....
</div>
<hr />
我的观点有以下形式:
<form method="get" action="@Url.Action("Index")" data-ucw-ajax="true" data-ucw-target="#facilitiesList">
我的JQuery代码是:
$(function () {
var ajaxFormSubmit = function () {
var $form = $(this);
var options = {
url: $form.attr('action'),
type: $form.attr('method'),
data: $form.serialize()
};
$.ajax(options).done(function (data) {
var $target = $($form.attr('data-ucw-target'));
var $newHtml = $(data);
$target.replaceWith($newHtml);
$newHtml.effect('highlight');
});
return false;
};
$('form[data-ucw-ajax="true"]').submit(ajaxFormSubmit);
});
我的脚本加载包如下所示:
bundles.Add(new ScriptBundle("~/bundles/jquery/ucw").Include(
"~/Scripts/jquery-{version}.js",
"~/Scripts/jquery-ui-{version}.js",
"~/Scripts/jquery.unobtrusive*",
"~/Scripts/jquery.validate*",
"~/Scripts/jquery-migrate-1.0.0.js",
"~/Scripts/My.js"
));
答案 0 :(得分:0)
“这个”有范围问题。您在ajaxFormSubmit中引用的“this”是ajaxFormSubmit的上下文,而不是链接的单击处理程序。你需要做这样的事情:
$form = $('form[data-ucw-ajax="true"]');
或者给表单一个ID并使用:
$form = $('#myForm');
另外,我会将Jquery移动到另一个包,以确保它在所有其他库之前加载。
答案 1 :(得分:0)
我从this changeset的代码开始,然后通过NuGet:
我没有在Chrome或IE10中看到任何问题(JQMigrate警告除外)。除了jQuery版本的细微差别之外,我看不到任何不同的东西。你能尝试提高你的jQuery参考吗?如果问题仍然存在,请再次使用1.9.1
向我发送错误消息答案 2 :(得分:0)
我与该视频课程中的另一个代码有类似的错误 - 当从部分View中返回html包装到JQuery中以便稍后应用动画时...
function dataReceived(data) {
var $newHtml = $(data); -<<<<same Exception here
$(target).replaceWith(data);
$(data).effect("highlight");
}
Exception: Unhandled exception at line 4421, column 2 in jquery-1.9.1.js
0x800a139e - JavaScript runtime error: Syntax error, unrecognized expression:
<div id="restaurantsList">.....