如何在jQuery中将已经转为二进制的图像byte[]用$.ajax在页面正常显示?

有一点我觉得很奇怪,这是ashx代码publicvoidProcessRequest(HttpContextcontext){intwidth=440,height=20... 有一点我觉得很奇怪,这是ashx代码

public void ProcessRequest (HttpContext context) {
int width = 440, height = 200;
Bitmap image = new Bitmap(width, height);
Graphics g = Graphics.FromImage(image);
g.Clear(Color.YellowGreen);
Font font = new Font("宋体", 12);
Brush brush = new SolidBrush(Color.Red);
Pen pen = new Pen(Color.Blue, 1);
g.DrawLine(pen, 40, 80, 100, 80);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
context.Response.ContentType = "image/jpg";
context.Response.BinaryWrite(ms.ToArray());
}
在页面中如果直接将img的src属性改为“Handler.ashx”就可以正常显示,可如果这样就错了:
$.ajax({
type: "post",
contentType: "application/json",
url: "Handler.ashx",
success: function (result) {
$('img').attr('src',result);
}
});
为什么?
如果我改用.asmx来返回byte[],那么在jQuery中又该用$.ajax如何使得显示图像呢?
展开
 我来答
84许
推荐于2016-10-25 · TA获得超过379个赞
知道小有建树答主
回答量:171
采纳率:0%
帮助的人:226万
展开全部

ajax只支持如下字符串(String)格式(dataType):





  1. "xml": 返回 XML 文档,可用 jQuery 处理。

  2. "html": 返回纯文本 HTML 信息;包含的script标签会在插入dom时执行。

  3. "script": 返回纯文本 JavaScript
    代码。不会自动缓存结果。除非设置了"cache"参数。'''注意:'''在远程请求时(不在同一个域下),所有POST请求都将转为GET请求。(因为将使用DOM的script标签来加载)

  4. "json": 返回 JSON 数据 。

  5. "jsonp": JSONP
    格式。使用 JSONP
    形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。

  6. "text": 返回纯文本字符串


不能也必要用ajax技术显示图像。


img预加载示例:

function loadImage(url, callback) {
    var img = new Image(); //创建一个Image对象,实现图片的预下载
    img.src = url;
     
    if(img.complete) { // 如果图片已经存在于浏览器缓存,直接调用回调函数
        callback.call(img);
        return; // 直接返回,不用再处理onload事件
    }
    img.onload = function () { //图片下载完毕时异步调用callback函数。
        callback.call(img);//将回调函数的this替换为Image对象
    };
};
匿名用户
2014-03-06
展开全部
contentType: "application/json"返回类型是json

js只能处理html字符串和JSON字符串
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式