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 请求,而不是第二次。

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 回答