java - 验证码图像返回二进制数据?如何显示这个?

标签 java javascript binary captcha binary-data

我正在从基于 Java 的包“SimpleCaptcha”中检索验证码图像

在前端,我只是将以下内容放入我的页面,然后我得到了一个验证码图像:

<img src="stickyImg" />

我想使用 javascript 在点击时重新加载此验证码图像。

我试过:

$("#theclickhandler").click(function(){  
    $("#stickyImg").load('stickyImg', function(response){           
       $("#stickyImg").attr('src', response); 
    });
    return false;
});

这得到了图像但输出了这样的东西(明显缩短了很多):

<img src="captcha image�PNG �ݚ��L�23U�݆�}$�J����Dy����IEND�B`� ">

对我来说,这看起来像是原始的二进制数据。 我如何让它发挥作用?

最佳答案

图像标签的 src 属性向浏览器指定要加载图像的位置,而不是图像的内容。因此,您将图像的内容塞进了您希望位置所在的位置,这给您带来了垃圾,因为它根本没有意义。

因此,要重新加载图片,您需要告诉浏览器图片地址已更改。仅仅将图像的 src 属性中的位置重写为相同的地址是不够的——这不会告诉浏览器更改任何内容。你可以通过在查询字符串中填充一些随机数据来克服这个问题,比如请求的时间。就像@mikerobi 建议的那样,您可以重写 src 标记,这里修改为在查询字符串中放置时间戳(您的 servlet 几乎肯定会忽略它):

$('#stickyImg').attr('src', 'stickyImg?' + (new Date().getTime()));

关于java - 验证码图像返回二进制数据?如何显示这个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4061646/

相关文章:

java - 使用两个不同的线程打印偶数和奇数

java - OpenShift Gradle 失败并出现 java.net.BindException : Permission denied

java - 如何将一个数组设置为另一个数组的相同排序?

javascript - 为什么此 jQuery 代码仅适用于一次迭代?

go - 如何简化switch语句

java - 了解 dagger2 ScopedProvider 中的延迟初始化单例,作者:Gregory Kick

javascript - 读取 select=multiple 不工作

javascript - 如何访问 ngfor 中 Angular 2 中生成的 Accordion 列表中的特定 Accordion

linux - 将包含整数计数的 gzip 二进制文件反卷积为人类可读的数字

database - 数据库中的二进制数据,blob 与压缩的 base64