jQuery Ajax调用HTTP Handler(.ashx)

时间:2011-08-10 15:00:15

标签: asp.net jquery httphandler

我有一个HTTP处理程序,它将图像发送到客户端(在回发期间):

    public class ImageHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        Byte[] pic = GetPhoto(Convert.ToInt32(context.Request.QueryString["userID"]));

        if (pic != null)
        {
            context.Response.ContentType = "image/jpeg";
            context.Response.OutputStream.Write(pic, 0, pic.Length);
        }
        else
        {
            context.Response.ContentType = "image/png";
            context.Response.WriteFile("/AllImages/DefaultPicture_large.png");
        }
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}

如何使用此处理程序通过jQuery ajax请求将图像发送到客户端?

几个问题:                        1)如何将图像转换为JSON? 2)如果无法将图像转换为JSON,我可以使用哪种格式将图像发送到客户端?

Tnx很多!

2 个答案:

答案 0 :(得分:3)

您只是想在页面上显示它吗?为什么不写一个img标签,src指向你的处理程序?

类似的东西:

var img_url = '/myImageHandler.ashx?userDI=' + some_user_id;
$("#displayArea").append($("<img src='" + img_url + "' alt='user image' />"));

答案 1 :(得分:3)

1)要将图像作为JSON发送,您需要将其转换为base64编码的字符串:

 string imageString = Convert.ToBase64String(pic);
 return imageString;

2)但是,并非所有浏览器(IE&lt; 8)都支持您需要用来显示这些base64编码图像的data-uri方案。

最好的方法是编写img标记,src指向httpHandler。