1

私のボタンクリックイベントハンドラーはこのようなものです;

$(".imgRefreshContact").click(function () {
       $.ajax({
             url: "/Presentation/Site/Handlers/RefreshCaptcha.ashx",
             type: "POST",
             cache: false,
             async: true,
             success: function () { }
            });
       $("#imgCaptcha").attr('src', '/Presentation/Site/Handlers/CreateCaptcha.ashx');
 });

RefreshCaptcha ハンドラ;

public void ProcessRequest(HttpContext context)
    {
        context.Session["CaptchaMetin"] = ConfirmCode.GenerateRandomCode();
    }

CreateCapthca ハンドラ;

public void ProcessRequest(HttpContext context)
    {
        ConfirmCode cc = new ConfirmCode(context.Session["CaptchaMetin"].ToString(), 136, 36);

        context.Response.Clear();
        context.Response.ContentType = "image/jpeg";

        cc.Image.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);

        cc.Dispose();
    }

img ボタンをクリックすると、Chrome と Firefox では完全に機能しますが、IE 9 では失敗します。デバッガーは RefreshCaptcha ハンドラーに入りますが、CreateCaptcha ハンドラーには入りません。したがって、IE は ajax リクエストを 2 回ではなく 1 回行います。

IEとajaxリクエストの問題は何ですか

4

1 に答える 1

2

IE 開発者ツール (F12) を使用して、要求をデバッグします。IE は通常、リクエストをキャッシュし、何も変更しない場合は 304 ステータス コード (未変更) を返すだけです。これを防ぐには、ランダムなクエリ文字列パラメーターを ajax 呼び出しに追加します。何かのようなもの:

url: "/Presentation/Site/Handlers/RefreshCaptcha.ashx?rnd=" + Math.Random()
于 2013-05-29T08:44:04.627 に答える