【问题标题】:Get an image through jQuery AJAX通过 jQuery AJAX 获取图像
【发布时间】:2013-06-27 09:46:06
【问题描述】:

以下图片标签在我的登录页面中

<img id="CaptchaImg" alt="Captcha" src="@url.action("Captcha","Login")" style="" />

现在,当我刷新我的登录页面时,它可以正常工作,并从控制器获取图像,但是当我注销并且登录页面呈现时。控制器方法没有被调用。问题仅在 IE 中可以在 Chrome 上正常工作.有解决办法吗? 我可以对控制器进行 jQuery Ajax 调用吗?我试过了,但没有调用成功方法。有没有其他办法?

$.ajax({
    type: "GET",
    url: '/Login/CaptchaImage',
    datatype: "image",
    success: function(data) {
        debugger
        $('#CaptchaImg').attr('src', data);
    }
});

【问题讨论】:

  • 你为什么要像"@url.action("Captcha","Login")"这样使用img src?

标签: asp.net-mvc-3 jquery imagesource


【解决方案1】:

试试这个

$.ajax({
    type: "GET",
    url: '@Url.Action("Captcha","Login")',
    dataType:"image/jpg",
    success: function (data) {
        $('#CaptchaImg').attr('src', data);
    }
 });

【讨论】:

  • 数据类型应该是dataType ?
  • url.action 应该是Url.Action ?
  • 感谢回复,现在控制到了成功函数但是数据格式不正确可能是因为错误的数据类型。“Captcha”方法返回类型为“FileContentResult”的对象“。那么“image/jpeg”是对的吗?
  • 请检查您返回的是 JPG/GIF 格式的图像,如果是 JPG 则它将运行否则将数据类型更改为 dataType: "image/gif", Reference- msankhala.wordpress.com/2012/08/29/loading-image-through-ajax forums.asp.net/t/1758165.aspx/1
  • 与此相关的小错误 - 如果您希望返回图像/jpg,则需要设置 contentType: 'image/jpg' 来代替
【解决方案2】:

web 服务器应该返回 base64 数据。像这样

{ base64Data:"blahblahblah" }

您的 ajax 请求内容类型可以是纯 json ; 在 ajax 的成功函数中,你可以这样做

    success:function(data){
     var src="data:image/png;base64,"+data.base64Data;
      $('#CaptchaImg').attr(src,src)
}

【讨论】:

    猜你喜欢
    • 2016-03-31
    • 1970-01-01
    • 2016-02-15
    • 1970-01-01
    • 1970-01-01
    • 2013-03-02
    • 1970-01-01
    • 2011-02-10
    • 1970-01-01
    相关资源
    最近更新 更多