Jquery Ajax& Microsoft JScript运行时错误:语法错误,无法识别的表达式:

时间:2013-02-05 01:02:27

标签: asp.net-mvc jquery asp.net-mvc-4

我正在研究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"
                        ));

3 个答案:

答案 0 :(得分:0)

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

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

或者给表单一个ID并使用:

$form = $('#myForm');

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

答案 1 :(得分:0)

我从this changeset的代码开始,然后通过NuGet:

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

我没有在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">.....