Visual Studio 2012では、インターネットテンプレートを使用してMVC 4プロジェクトを作成しました。その後、jQueryを現在のバージョンの1.9に更新すると、生成されたWebアプリケーションにログインしようとするとjQueryエラーが発生します。このエラーはIE(IE 10を実行しています)でのみ発生し、ブラウザーごとのJSONパーサーの違いが原因のようです。
したがって、私が解決する必要があるのは、MVC 4インターネットテンプレートを使用しながら、jQuery1.9に更新できるようにする方法です。
エラーを再現する手順は次のとおりです。
1:インターネットプロジェクトテンプレートを使用して新しいMVC4プロジェクトを作成します-テンプレートはjQuery1.7.1.1を使用し、正常に動作します。新しいユーザーとして登録してサインインできます
。2: jQuery、jQuery検証、jQueryUIを最新バージョン(現在、それぞれ1.9.0、1.10.0、1.10.0)。
3:アプリを実行し、サインインページに切り替えます。このページでは、次のjquery.unobtrusive-ajax.jsコードでエラーが発生します。
$("a[data-ajax=true]").live("click", function (evt) {
evt.preventDefault();
asyncRequest(this, {
url: this.href,
type: "GET",
data: []
});
});
4: OKですが、問題ありません。live()はjQuery 1.9で削除されたため、jQuery移行スクリプトjquery-migrate-1.0.0.jsを含めます。
5:アプリケーションを再実行すると、jquery-1.9.0.jsでJSONの解析にサインインするとエラーが発生します。エラーはparseJSONメソッドにあります。
parseJSON: function( data ) {
// Attempt to parse using the native JSON parser first
if ( window.JSON && window.JSON.parse ) {
return window.JSON.parse( data );
}...
このエラーは、「undefined」がparseJSONに渡され、IEウィンドウで発生するために発生します。JSON.parseはエラーをスローしますが、他のブラウザーではエラーはスローされません。
したがって、問題は、MVC4インターネットテンプレートをIE上のjQuery1.9で動作させるための許容可能な回避策は何でしょうか?
ちなみに、これはjQuery 1.8の部分的なparseJSONメソッドで、以前はエラーがなかった理由を説明しています。
parseJSON: function( data ) {
if ( !data || typeof data !== "string") {
return null;
}...