4

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;
    }...
4

3 に答える 3

1

答えはこのリンクにあるかもしれません。 http://forum.jquery.com/topic/parsejson-in-1-9-0-is-different-from-earlier-versionsMVC チームは次のリリースで修正することを計画しているようです。これがお役に立てば幸いです。

于 2013-01-23T15:24:44.957 に答える
1

JQuery では、多くの機能が非推奨になりました。あなたはこれに興味があるかもしれません:

https://github.com/jquery/jquery-migrate/#readme

于 2013-01-22T22:55:49.303 に答える
0

ASP.NET and Web Tools 2012.2 リリース ( http://www.asp.net/vnextからダウンロード) では、更新された jquery.validate.unobtrusive.js で修正する必要があります。

于 2013-02-21T23:38:15.013 に答える