注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

云淡风轻

云淡风轻近午天,傍花随柳过前川。

 
 
 

日志

 
 

setRequestHeader在IE下调用两次的问题  

2009-06-02 10:03:56|  分类: 格物致知 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
代码:
  4 var xhr = new ActiveXObject("Microsoft.XMLHTTP");
  5 xhr.open('GET', './', true)
  6 xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded;charset=utf-8');
  7 xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded;charset=utf-8');
  8 xhr.setRequestHeader('xxx','yyy');
  9 xhr.setRequestHeader('xxx','zzz');
 10 xhr.send()

request 的header里,得到的是

Content-Type: application/x-www-form-urlencoded;charset=utf-8, application/x-www-form-urlencoded;charset=utf-8
xxx: yyy, zzz

就是说,调用两次setRequestHeader,第二次设置的内容不是把第一次设置的覆盖掉,而是添加在后面!

导致的问题是,在jQuery里,如果ajax的请求是POST方法,而且有数据的话,jQuery会自动调用setRequestHeader

3522                         if ( s.data )
3523                                 xhr.setRequestHeader("Content-Type", s.contentType);

这时,contentType一般是“application/x-www-form-urlencoded”,如果自己再调用一次setRequestHeader就会出问题了。

  3 <script src="/jquery-1.3.2.js"></script>
  4 <script>                
  5 $.ajax({                        
  6         type: 'GET',
  7         url: './',      
  8         beforeSend: function(xhr){
  9                 xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded;charset=utf-8');
 10         },                              
 11         data: { a: 123 }
 12 });
 13
 14 </script>
这样的代码,IE下跑,服务器得到的Content-Type是'application/x-www-form-urlencoded,application/x-www-form-urlencoded;charset=utf-8'

 

  评论这张
 
阅读(2253)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017