`
classicbride
  • 浏览: 14924 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
最近访客 更多访客>>
社区版块
存档分类
最新评论

一个javascript:void(0)引发的异常

阅读更多
当用户登陆时,需要用户输入验证码,在服务器端生成一张内存图像,写入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了~ 吼吼~ 这个小问题折磨我很久,日~!! 

分享到:
评论

相关推荐

    JavaScript面向对象的支持

    在早期的IE5中,直接使用`undefined`进行比较可能会引发异常,而在较新版本中,`undefined`则被视为一个保留字,可以直接用于比较。为了确保兼容性,开发者有时会通过`void null`或`void 0`等方式显式地声明`...

    a标签调用js的方法总结

    与上一种方法相似,唯一的区别是`javascript:`后面没有实际的代码,这实际上执行了一个空的JavaScript表达式。 4. `a href="#" onclick="js_method()"` `#`是一个内置的URL片段标识符,表示页面顶部。点击后,页面...

    javascript类型系统--undefined和null全面了解_.docx

    在 JavaScript 中,每个变量都有一个类型,当变量未初始化或引用的对象不存在时,就会出现 `undefined` 或 `null`。 `undefined` 主要表示变量已声明但未赋值的情况。例如: ```javascript var test; // undefined ...

    javascript,VBScript关键字and保留字

    19. `throw`:抛出一个异常。 20. `try...catch`:用于处理可能抛出的异常。 21. `typeof`:返回变量或表达式的类型。 22. `var`:声明变量。 23. `void`:返回undefined,通常用于阻止表达式产生副作用。 24. `...

    ASP.net多文件上传

    ASP.NET多文件上传是Web开发中的一个重要功能,它允许用户一次性上传多个文件到服务器。在ASP.NET框架下,实现这个功能通常涉及到HTML表单、JavaScript前端处理和C#后端代码。下面将详细讲解实现这一功能的关键步骤...

    createElementNS06.rar_empty

    在JavaScript中,`Element`接口提供了`createElementNS`方法,用于创建一个新的元素节点,该节点遵循特定的命名空间(namespace)。然而,当调用此方法时,如果传递的合格名称(qualified name)不符合XML规范,可能...

    javaweb编程中常见的异常及处理方法.doc

    例如,你可以在Action中写一个方法,将接收到的String类型日期数据通过`SimpleDateFormat`解析成`java.util.Date`。 2. **自定义日期转换器**:创建一个实现Apache Commons BeanUtils的`Converter`接口的类,如`...

    WebView笔记

    - Android 4.4(KitKat)及以上版本,可以使用`addJavascriptInterface()`方法创建一个Java对象,并将其暴露给JavaScript,从而实现JavaScript与Android原生代码的交互。同时,需要注意安全问题,因为这可能引发跨...

    .net面试题(最新)

    假设有一个任务,需要在一个多线程环境中处理大量的整型数据,每个线程处理一个独立的整型值。考虑到.NET Remoting和Web Service的技术特点,请简要分析这两种技术在此场景下的适用性。 **解答:** 1. **.NET ...

    2021-2022计算机二级等级考试试题及答案No.4144.docx

    Java虚拟机不直接检测和处理死锁,出现死锁时,线程会陷入阻塞状态,不会引发异常,除非有特别的处理机制。所以ABD选项是正确的。 15. 对象互斥锁: - synchronized关键字用于在Java中实现对象的互斥锁,保证同一...

    WinForm程序中webBrowser使用谷歌内核

    同时,注意CEF的方法调用必须在CEF的UI线程上执行,否则可能引发异常。可以使用`browser.Invoke`或`browser.BeginInvoke`来确保操作在正确的线程上进行。 通过以上步骤,你就可以在WinForm程序中成功集成使用谷歌...

    Ajax Timer异步刷新实例

    而Ajax Timer则是AJAX技术的一个应用场景,用于定时异步地更新页面内容。 ### 1. AJAX基础 AJAX的核心是XMLHttpRequest对象,它允许JavaScript在后台与服务器进行通信。当用户触发某个事件(例如点击按钮)时,...

    Cocos2dxDownloader.java文件报错需要引入的第三方包

    `android-async-http`是一个非常流行的Android异步HTTP客户端库,由Leonardo Uribe开发,它简化了网络请求的处理,提供了异步操作的能力,使得在Android主线程中不会因网络操作而引发ANR(Application Not ...

    unity_script.docx

    需要注意的是,如果`prefab`没有正确赋值,即为`null`,那么在调用`Instantiate`时会引发空引用异常。因此,确保在运行前正确设置所有引用是非常重要的,这可以避免潜在的运行时错误。 总的来说,理解`...

    神州数码笔试题.txt

    - **可见性**:当一个线程修改了一个被 `volatile` 修饰的共享变量后,其他线程能够立即看到这个变化。 - **禁止指令重排序**:`volatile` 变量的读写不会被编译器和处理器重排序。 ### 8. 静态变量与初始化 - **...

    大型c#网站如何提高性能.doc

    例如,只在第一次加载页面时执行数据库查询。 ```csharp void Page_Load(Object sender, EventArgs e) { if (!Page.IsPostBack) { // 数据库操作 } } ``` 2. **关闭不必要的Session状态**: - 如果页面不需要...

    iOS开发之WKWebViewJavascriptBridge Xcode9中导致crash的解决

    WKWebViewJavascriptBridge是一个方便的工具,它允许Objective-C/Swift与JavaScript之间进行双向通信,但在Xcode 9中出现的这个特定问题,是由于对WKWebView某些方法的处理不当导致的。 问题的关键在于`webView:...

    java全试题与详解.doc

    当需要程序主动引发一个异常时,可以使用`throw`语句。语法格式为:`throw exception;`,其中`exception`是要抛出的异常对象。需要注意的是,如果方法中抛出了检查性异常,则该方法必须声明抛出这个异常,或者在方法...

    LitJson.rar

    - LitJson不支持JSON数组的动态扩展,因此在反序列化时,如果JSON数组长度与目标.NET类型数组长度不符,可能会引发异常。 - 对于嵌套或复杂的JSON结构,需要确保类结构与其匹配,否则可能导致反序列化失败。 总之...

Global site tag (gtag.js) - Google Analytics