14

ASP.NET MVC 4およびNuGetを使用してパッケージを管理します。ASP.NET MVC 4:jQuery Unobtrusive Ajaxを修正できません

NuGet経由jQuery 1.9.1にアップグレードした後、私はjQuery 1.9.xlive()機能の除去に関するJavaScriptエラーが発生して始めました。

私は、VS.NETからデバッグモードで起動、ログインページに移動し、以下を得るためにF5ヒット:

このStackOverflowの答えが見つかり

Error Microsoft JScript

https://stackoverflow.com/a/14512797をして~\Scripts\jquery.unobtrusive-ajax.jsに4つの変更を加えました。

マイ~\Scripts\jquery.unobtrusive-ajax.js

$(document).on("click", "a[data-ajax=true]", function (evt) { 
     ... 
    }); 
    $(document).on("click", "form[data-ajax=true] input[type=image]", function (evt) { 
     ... 
    }); 
    $(document).on("click", "form[data-ajax=true] :submit", function (evt) { 
     ... 
    }); 
    $(document).on("submit", "form[data-ajax=true]", function (evt) { 
     ... 
    }); 

私は物理的にもjquery.unobtrusive-ajax.min.jsを削除し、私の更新~\Scripts\jquery.unobtrusive-ajax.jsからそれを再生成するWebGrease 1.3.0を使用。

ただし、何らかの理由で.live()機能を使用しないように変更しても、固執しません。 VS.NETがMVCアプリケーションを実行しているIIS Express 8.0 Webサイト(localhost:63798)を停止しようとしました。

また、Build-> Clean Solution、Build-> Rebuild Solutionを実行してから、F5キーを押してデバッグモードで再度実行してみてください。

これまで経験したことがあり、洞察力があれば、とても感謝しています。前もって感謝します。

+0

あなたのビューではどのライブラリを参照していますか? –

+0

@DaveAこのビューでは、/ Scripts/jquery-1.9.1.js'、/ Scripts/jquery.unobtrusive-ajax.js'、/ Scripts/jquery.validate.js'、 '/ Scripts/jquery .validate.unobtrusive.js' –

+1

キャッシュをクリアするか、別のブラウザからヒットしましたか?または、chromeを使用して開発者ツールを起動し、/Scripts/jquery.unobstrusive-ajax.js(非縮小)をクリックしてファイルのソースを表示して、変更がプッシュされていることを確認します。私は何かが古いコピーを保持していると思う。 – Tommy

答えて

17

Microsoft jQuery Unobtrusive Ajaxパッケージには、この問題を解決するために、バージョン2.0.30116.0で修正されています。 .live()へのコールは.on()に変更されました。

NuGetパッケージをアップグレードして、最新バージョンを入手してください。

しかし、jQuery Migrateパッケージを使用すると、他のプラグインや独自のコードでjQuery 1.9以降の変更と互換性のない問題を見つけることができます。

+0

+1マイグレーションファイルを使用する必要はなく、純粋にNugetパッケージをアップグレードすることによって解決するソリューションを見つけることははるかに優れています。もちろん、パーソナルコードの場合、必要に応じてレガシーコードをアップグレードするためにも、移行ファイルは依然として非常に便利です。私はリンクされたライブラリの2月のアップグレードを控えています。非常に良い情報。 – Nope

+1

それは私の問題を解決しました。どうもありがとうございました。私は 'NuGet'に入り、Microsoft jQuery Unobtrusive Ajaxをアップグレードしました。 NuGetギャラリーのリンクを共有してくれて感謝しています。私はこのようなサイト(JavaのMaven Centralを思い出しました)が存在していたことが分かりました。 –

10

live()は、jQuery 1.9でいくつかの他の機能とともに削除されました。

削除された機能をサポートする必要がある場合は、削除された機能を含むjQuery移行ファイルも追加する必要があります。以下に類似の参照を追加

はあなたが必要とするすべての機能を含める必要があります。

<script src="http://code.jquery.com/jquery-migrate-1.1.1.js"></script> 

あなたが任意の削除機能を使用するときにデバッグモードで移行ファイルもあなたを通知コンソールに警告を追加します。これにより、jQuery 1.9以降を使用して、移行ファイル参照を削除できるようになるにつれて、それらをゆっくりと置き換える際に役立ちます。

jQuery 1.9への移行の詳細については、次のjQueryブログ記事を参照してください。

+0

+1多くの有用な参照リンク。しかし、私はすでに 'jquery.unobtrusive-ajax.js'から手動で.live()を削除しました。私のコードスニペットを見てください。何らかの理由でjquery.unobtrusive-ajax.jsの変更をスティックすることができないため、jquery-migrateを使用してみます。 –

+0

@PhilipTenn:うまくいけば、移行ファイルへの参照がそれを整理することを望みます。移行ファイルの全体のアイデアは、マイグレーションをサポートすることであり、サードパーティのプラグイン/ライブラリに依存する開発者の助けとなります。開発者は直接変更することはできません。 Nugetにマイグレーションファイルをダウンロードするためのリファレンスがあるのか​​どうか分かりませんが、Nugetに問題がある場合は、いつでもjQueryファイルへのNugetリファレンスを削除し、必要なファイルを手動でダウンロードしてプロジェクトに含めてみましょうファイルを移行します。 – Nope

+0

ありがとうございました。それは本当に助けになりました。私はjmoerdykの答えを受け入れることになりましたが、あなたの情報と洞察力はとても役に立ちました。 –

関連する問題