今天程序中有个地方需要 Ajax 方式 POST 数据,发现在 IE 6.0 下正常,而 FireFox 0.3.0 和 safari 3.1.2则出错。
通过 FireBug 抓取 ajax 回发后得到的页面信息如下:
HTTP Error 411 - Length required
经过 google 搜索发现,这个 HTTP 状态码对应于服务器没有接收到 Content-Lengh 这个 Header 的情况。
而为什么只有在 Ajax 的情况下有呢?是因为调用了:
xmlHttp.send(null);
发送 null 的时候,服务器就有可能发出以上信息。而按照正常逻辑,不需要发送信息的时候,应该用 GET 方法而不是 POST (在 xmlHttp.open 方法中指定),那样就能解决此问题。
但也可以用:
xmlHttp.send('');
来解决。
因为我调用了 jQuery 的 $.ajax 方法来间接实现的 Ajax 功能,所以,jQuery 中调用 $.ajax 时,无论有没有数据,总是写一个空字符串为数据,就可以避免这种问题了:
$.ajax( {
url :'<%=request.getContextPath()%>/plugins/servlet/getIssues',
data :"projectId=" + projectId + "&componentId=" + componentId,
type :'POST',
dataType :'xml',
data :'',
error : function(XMLHttpRequest, textStatus, errorThrown) {
dealAjaxError();
},
success : function(xml) {
dealWithXMLData(xml);
$("#flag").attr("value","false");
}
});
至于为什么 IE 可以而 FireFox 则出错,可能是因为 IE 中的 xmlhttp 对象和 FireFox 的 XmlHttpRequest 行为稍有不同造成的。
分享到:
相关推荐
主要介绍了为jquery的ajax请求添加超时timeout时间的操作方法,文中通过一段简单的代码给大家介绍jquery ajax超时设置方法,感兴趣的朋友跟随脚本之家小编一起看看吧
jQuery-ajax-用户名异步请求,转载请注明出处:https://blog.csdn.net/qq_40374604(如有需要欢迎留言,我一定会尽快解答)
一个完整的jquery+ajax传送请求的实例
Jquery跨域访问Web服务的demo源码
今天小编就为大家分享一篇jQuery中ajax请求后台返回json数据并渲染HTML的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
Struts2+jQuery ajax的一个商品小系统Struts2+jQuery ajax的一个商品小系统
jquery中ajax请求后台数据成功后既不执行success也不执行error,此外系统报错:Uncaught SyntaxError: Unexpected identifier at Object.success,但后台能够返回数据,原代码如下: var source=[]; $.ajax({ ...
Jquery ajax 获取验证码的项目代码
本篇文章主要介绍了jQuery Ajax前后端使用JSON进行交互示例,实现前端通过jQuery Ajax传输json到后端,后端接收json,对json进行处理,后端返回一个json给前端,有兴趣的可以了解一下。
工作之余写的一些Ajax应用,有6个Demo,数据库为mysql,使用之前看readme.txt。javascript与jquery混用。无刷新购物车、输入提示、表格局部刷新、xml实时数据更新、划词解释。
下面小编就为大家带来一篇Jquery ajax请求导出Excel表格的实现代码。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
struts2下通过jquery的ajax从后台传json对象并展示在web页面上的一个小例子,所需的jar包请自己下载否则无法运行,所需的包包括struts的必须包,json的支持包和struts对json的支持包
本文实例讲述了jquery ajax 请求小技巧。分享给大家供大家参考,具体如下: jquery 是一个非常好用的js框架,它为我们提供了很多工具。启动异步请求就是很好用的一个工具 官方推荐的ajax 请求格式 $.ajax({ url:...
jquery中封装了一些ajax请求的方法,很实用。 比如.ajaxComplete()——请求完成时.ajaxError()——请求失败时.ajaxSend()——在Ajax请求发送时附加一个function去执行.ajaxStart()——请求开始时,.ajaxStop()——...
Jquery progressbar通过Ajax请求获取后台进度演示(Struts2)
刚接触学会用jQuery ajax的时候,觉得真东西好神奇,这样就可以把数据取回来了啊。然后我可以把取回来的数据渲染到页面上,一颗赛艇。 之前很早接触到项目,并不知道怎么优雅的去用jquery ajax(现在也不优雅); ...
jquery中封装了一些ajax请求的方法,很实用。 比如.ajaxComplete()——请求完成时.ajaxError()——请求失败时.ajaxSend()——在Ajax请求发送时附加一个function去执行.ajaxStart()——请求开始时,.ajaxStop()——...
vs2013 利用Ajax+Jquery实现异步进度条效果
jquery中ajax方法有个属性async用于控制同步和异步,默认是true,即ajax请求默认是异步请求,有时项目中会用到AJAX同步。这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出现
自己做了一个jquery ajax异步请求,获得一个list对象的下拉框例子自己做了一个jquery ajax异步请求,获得一个list对象的下拉框例子