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

そのビデオコースの別のコードで同様のエラーが発生しました-後でアニメーションを適用するために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 に答える
0

"This" has scope issues. The "this" that you refer to in ajaxFormSubmit is the context of the ajaxFormSubmit , not the click handler of the link. You need to do something like this:

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

or give the form an ID and use:

$form = $('#myForm');

Also, I would move Jquery to another bundle to ensure it is loaded before all the other libraries.

于 2013-02-05T02:16:32.587 に答える
0

この 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 のエラー メッセージを再度送信してください。

于 2013-02-06T15:17:38.147 に答える