0

我正在由 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"
                        ));
4

3 回答 3

0

“这个”有范围问题。您在 ajaxFormSubmit 中引用的“this”是 ajaxFormSubmit 的上下文,而不是链接的单击处理程序。你需要做这样的事情:

$form = $('form[data-ucw-ajax="true"]');

或给表格一个 ID 并使用:

$form = $('#myForm');

此外,我会将 Jquery 移动到另一个包,以确保它在所有其他库之前加载。

于 2013-02-05T02:16:32.587 回答
0

我从这个变更集中的代码开始,然后通过 NuGet:

  • 将 jQuery 更新到 1.9.1
  • 将 jQuery UI 更新到 1.10.0
  • 添加了 jQuery migrate 1.1.0(也添加到 jQuery 捆绑包中)

我在 Chrome 或 IE10 中看不到任何问题(JQMigrate 警告除外)。除了 jQuery 版本的细微差别之外,我看不出有什么不同。你能尝试增加你的 jQuery 参考吗?如果问题仍然存在,请使用 1.9.1 再次向我发送错误消息

于 2013-02-06T15:17:38.147 回答
0

我对该视频课程的另一个代码有类似的错误-当从包装到 JQuery 中的部分视图返回 html 以稍后应用动画时...

 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">.....
于 2013-04-15T15:49:44.937 回答