1

リンクのある cshtml ページと、コンテンツを表示する div があります。

<a href="#" onclick="Show_New_Page('#First_Div')>My Link</a>

<div id="First_Div">
    @Html.Partial("General_Page") <- This is the default page that gets displayed on load.
</div>

リンクをクリックすると、JavaScript 関数 Show_New_Page が呼び出され、文字列 '#First_Div' がパラメーターとして渡されます。Show_New_Page の ajax がその成功値を入れるようにしたい div の名前を渡します。その関数は次のようになります。

function Show_New_Page(div) {
    $.ajax(
    {
        type: "POST",
        url: url, //Declared above globally, unimportant
        data: data, //Declared above globally, unimportant
        success: function (result) {
            $(div).html(result);
        }
    });
}

Internet Explorer でこのリンクをクリックすると、新しいページが問題なく正常に表示されます。ただし、FireFox でこのリンクをクリックすると、ページ全体が白くなり、正常に読み込まれません。

Ajax やさまざまなブラウザーの問題に関する投稿はたくさんありますが、役に立ったものは見つかりませんでした。私が試すことができるヒントやヒントは大歓迎です。なぜこれが起こっているのかよくわからないので、情報を省略した場合は、できる限り提供するようにします.

4

2 に答える 2

1

関数)を呼び出しているときに、クロージングが欠落しているようです。Show_New_Pageまた、クリック ハンドラーから false を返して、デフォルト アクションをキャンセルすることをお勧めします。

<a href="#" onclick="Show_New_Page('#First_Div'); return false;">My Link</a>

また、このアンカーに id を与えることをお勧めします:

<a href="#" id="myLink" data-id="#First_Div">My Link</a>

次に、控えめに別のファイルで AJAX 化して、マークアップと JavaScript が混在しないようにします。

$(function() {
    $('#myLink').click(function() {
        $.ajax({
            type: 'POST',
            url: url, //Declared above globally, unimportant
            data: data, //Declared above globally, unimportant
            context: { id: $(this).data('id') },
            success: function (result) {
                $(this.id).html(result);
            }
        });
        return false;
    });
});
于 2013-02-26T15:29:47.587 に答える
0

ここでの問題は、リンクをクリックした後に渡されていた私のajaxビューがdocument.write()ステートメントを使用していたという事実でした。ページがすでに読み込まれた後、これを行うのは奇妙だということを学びました。これらのステートメントをajaxでロードされていないファイルに移動し、問題を修正しました。コメントやアイデアを提案してくれた皆さん、ありがとうございました。私を核心的な問題に導いたのは、これらのアイデアの調査でした!

レッスン:Firefoxでの過度のdocument.write()ステートメントに注意してください!

于 2013-02-28T14:50:42.500 に答える