当用户登陆时,需要用户输入验证码,在服务器端生成一张内存图像,写入response流中...
当用户点击“看不清楚,换成图片”时,利用javascript重新请求服务器端,生成新的图像... 到了这里万事大吉一切正常,在firefox下,IE7下都没有问题,但是在IE6下问题来了,无法刷新验证码,后台报错:
ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error
at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:319)
at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:288)
at org.apache.catalina.connector.CoyoteOutputStream.flush(CoyoteOutputStream.java:98)
at javax.imageio.stream.FileCacheImageOutputStream.flushBefore(FileCacheImageOutputStream.java:212)
at javax.imageio.stream.ImageInputStreamImpl.flush(ImageInputStreamImpl.java:801)
at com.sun.imageio.plugins.jpeg.JPEGImageWriter.write(JPEGImageWriter.java:1002)
google半天,说法很多,有说是因为服务器端数据没有写完时,客户端就停止了引发的... 但一直找不到问题的根本原因,继续google,终于找到原因,首先看看偶的代码
<img id="codeImage" src="validateCode.action" border="0" />
<a id="getValidateCode" href="javascript:void(0);">重新获得验证码</a>
function flashValidateCode(){
var randomStr = random();
$("#codeImage").get(0).src = "validateCode.action?randomStr=" + randomStr;
}
function random(){
return Math.round(Math.random() * 10000);
}
当用户有点击重新获取验证码时,我监听一个onclick事件,请求服务器生成新的图像,而我又写了href="javascript:void(0);"
对了,问题就出在javascript:void(0),<a></a>本身是一个超链接,它一个接受到了void(0),就认为请求处理完毕了,垃圾IE6就停止了对服务器端的响应,就造成了上述的问题,所以将代码改成:
<img id="codeImage" src="validateCode.action" border="0" />
<a id="getValidateCode" href="#">重新获得验证码</a>
就o了~ 吼吼~ 这个小问题折磨我很久,日~!!
分享到:
- 2008-12-10 17:37
- 浏览 1762
- 评论(0)
- 论坛回复 / 浏览 (0 / 3227)
- 查看更多
相关推荐
在早期的IE5中,直接使用`undefined`进行比较可能会引发异常,而在较新版本中,`undefined`则被视为一个保留字,可以直接用于比较。为了确保兼容性,开发者有时会通过`void null`或`void 0`等方式显式地声明`...
与上一种方法相似,唯一的区别是`javascript:`后面没有实际的代码,这实际上执行了一个空的JavaScript表达式。 4. `a href="#" onclick="js_method()"` `#`是一个内置的URL片段标识符,表示页面顶部。点击后,页面...
在 JavaScript 中,每个变量都有一个类型,当变量未初始化或引用的对象不存在时,就会出现 `undefined` 或 `null`。 `undefined` 主要表示变量已声明但未赋值的情况。例如: ```javascript var test; // undefined ...
19. `throw`:抛出一个异常。 20. `try...catch`:用于处理可能抛出的异常。 21. `typeof`:返回变量或表达式的类型。 22. `var`:声明变量。 23. `void`:返回undefined,通常用于阻止表达式产生副作用。 24. `...
ASP.NET多文件上传是Web开发中的一个重要功能,它允许用户一次性上传多个文件到服务器。在ASP.NET框架下,实现这个功能通常涉及到HTML表单、JavaScript前端处理和C#后端代码。下面将详细讲解实现这一功能的关键步骤...
在JavaScript中,`Element`接口提供了`createElementNS`方法,用于创建一个新的元素节点,该节点遵循特定的命名空间(namespace)。然而,当调用此方法时,如果传递的合格名称(qualified name)不符合XML规范,可能...
例如,你可以在Action中写一个方法,将接收到的String类型日期数据通过`SimpleDateFormat`解析成`java.util.Date`。 2. **自定义日期转换器**:创建一个实现Apache Commons BeanUtils的`Converter`接口的类,如`...
- Android 4.4(KitKat)及以上版本,可以使用`addJavascriptInterface()`方法创建一个Java对象,并将其暴露给JavaScript,从而实现JavaScript与Android原生代码的交互。同时,需要注意安全问题,因为这可能引发跨...
假设有一个任务,需要在一个多线程环境中处理大量的整型数据,每个线程处理一个独立的整型值。考虑到.NET Remoting和Web Service的技术特点,请简要分析这两种技术在此场景下的适用性。 **解答:** 1. **.NET ...
Java虚拟机不直接检测和处理死锁,出现死锁时,线程会陷入阻塞状态,不会引发异常,除非有特别的处理机制。所以ABD选项是正确的。 15. 对象互斥锁: - synchronized关键字用于在Java中实现对象的互斥锁,保证同一...
同时,注意CEF的方法调用必须在CEF的UI线程上执行,否则可能引发异常。可以使用`browser.Invoke`或`browser.BeginInvoke`来确保操作在正确的线程上进行。 通过以上步骤,你就可以在WinForm程序中成功集成使用谷歌...
而Ajax Timer则是AJAX技术的一个应用场景,用于定时异步地更新页面内容。 ### 1. AJAX基础 AJAX的核心是XMLHttpRequest对象,它允许JavaScript在后台与服务器进行通信。当用户触发某个事件(例如点击按钮)时,...
`android-async-http`是一个非常流行的Android异步HTTP客户端库,由Leonardo Uribe开发,它简化了网络请求的处理,提供了异步操作的能力,使得在Android主线程中不会因网络操作而引发ANR(Application Not ...
需要注意的是,如果`prefab`没有正确赋值,即为`null`,那么在调用`Instantiate`时会引发空引用异常。因此,确保在运行前正确设置所有引用是非常重要的,这可以避免潜在的运行时错误。 总的来说,理解`...
- **可见性**:当一个线程修改了一个被 `volatile` 修饰的共享变量后,其他线程能够立即看到这个变化。 - **禁止指令重排序**:`volatile` 变量的读写不会被编译器和处理器重排序。 ### 8. 静态变量与初始化 - **...
例如,只在第一次加载页面时执行数据库查询。 ```csharp void Page_Load(Object sender, EventArgs e) { if (!Page.IsPostBack) { // 数据库操作 } } ``` 2. **关闭不必要的Session状态**: - 如果页面不需要...
WKWebViewJavascriptBridge是一个方便的工具,它允许Objective-C/Swift与JavaScript之间进行双向通信,但在Xcode 9中出现的这个特定问题,是由于对WKWebView某些方法的处理不当导致的。 问题的关键在于`webView:...
当需要程序主动引发一个异常时,可以使用`throw`语句。语法格式为:`throw exception;`,其中`exception`是要抛出的异常对象。需要注意的是,如果方法中抛出了检查性异常,则该方法必须声明抛出这个异常,或者在方法...
- LitJson不支持JSON数组的动态扩展,因此在反序列化时,如果JSON数组长度与目标.NET类型数组长度不符,可能会引发异常。 - 对于嵌套或复杂的JSON结构,需要确保类结构与其匹配,否则可能导致反序列化失败。 总之...