-1

jqueryを使用して.ajax()によって別のページと呼ばれるAjaxCall.aspxページがあります。AjaxCall.aspx では、すべての html タグを削除して、

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AjaxCall.aspx.cs" Inherits="_AjaxCall" %>

背後にあるコードでは、ページロードイベントは単純でした。

protected void Page_Load(object sender, EventArgs e)
{
    Response.write("{ \"Testing\": \"Hello World!\" }");
}

ネットワークの Chrome 開発者ツールで ajax リクエストを監視していますが、AjaxCall.aspx ページに対して ajax リクエストを行うたびに、2 回続けてリクエストされていることに気付きました。後でデバッグ モードに入って、pageload イベントが 2 回発生したことを確認しました。掘り下げたところ、空の img src がこれに関係していることがわかりましたが、問題は、AjaxCall.aspx ページに html タグがないことです!

後で HTML の body タグと form タグを追加し直し、そのページを再度呼び出してみましたが、良いニュースは 1 回読み込まれることですが、これらの HTML タグを AjaxCall.aspx に追加するとすぐに、再度 2 回読み込まれます。

AjaxCall.aspx でこれらの html タグを使用することはできません。これは、要求されたときに json 形式のデータを返すと想定されているためです。これらの html タグを使用すると、それを呼び出したページでエラーが発生します。同時に、私が行ったすべての呼び出しで2回ロードし続けたくありません。とにかく、この問題を克服する方法はありますか?

4

1 に答える 1

2

アプリケーションページ(.aspxとコードビハインド)を使用してJSON応答を配信する場合は、プロセスを停止するために、応答をフラッシュして閉じる必要があります。

そうしないと、ページ.aspxが返され、複数のリクエストを生成するHTMLタグが含まれている可能性があります(不正なsrcを持つimgなど)

これを試して:

protected void Page_Load(object sender, EventArgs e)
{
    Response.write("{ \"Testing\": \"Hello World!\" }");
    Response.Flush();
    Response.End();
}

さらに、任意のコードによって挿入された可能性のあるオプションのコンテンツをクリアするために、このコンテンツのみを送信するためにResponse.write、の前に使用することもできます。Response.Clear

于 2013-02-08T04:27:13.483 に答える