最近用Ajax来做一个东东,可是在IE8中没错误,IE6、7都出现了错误,最终确认是因为url长度的问题,我的url长度很大有超过4000个字节,而ie6、7不支持这样长的url,ie8是可以,这样就导致了两个问题:
以下将这个长度很长的url简称myurl,且在两个页面都要用到它长长的querystring
1,用模式对话框打开新窗体,即showModalDialog是url过长,ie6、ie7打开的页面出错
2,用ajax的get方法请求另外一个页面ie6、ie7均失败
解决方案:
1,通过showModalDialog的第二个参数,将包含常常的querystring里边的绝大部分内容传到模式对话框,
var result = openDialog(url, input, 600, 400, 'status:yes;help:yes;scroll:yes');//这里的inpu是包含那部分常常内容的input
而模式对话框的页面通过document.getElementById('HiddenXml').value=window.dialogArguments.value;来获取值window.dialogArguments.value,这在ie6、7、8、Firefox3.5下均正常
2,ajax使用post的方法而不是get的方法
if(method=='POST') { xml.setRequestHeader("Content-Length",queryString.length); } xml.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
记得一定要设置请求头部的content-length和conten-type
|
xmlHttp.send(); 它可以带参数传递。
但你在调用send()方法之前要调用xmlHttp.setRequestHeader('Content-Type', 'application/x-www-
form-urlencoded');,不然会得不到数据。
当我们要尝试用GET方式传递WEB页面参数时,不得不考虑会不会因为浏览器地址栏长度限制导致错误。虽然用google能得到一堆,但是也许这些数据会互相矛盾。眼见为实,我用下面的方法测试了一下目前的各种浏览器的地址长度限制。
1.自己搭建一个本地的apache+php的web平台,这个不在本文的讨论范围。
2.在web服务器的根目录建立名为index.php的文件,写入如下内容:
<form method='get' action='index.php'>
$char='';
$len=1000;
$total_len=strlen('http://localhost/index.php?submit=submit&char=')+$len;
for($i=0;$i<$len;$i++){
$char.='1';
}
echo $_REQUEST['char'];
echo "<p>Address length: ".$total_len;
echo "<p><input type='submit' name='submit' value='submit'>";
echo "<p><input type='hidden' name='char' value='".$char."'>";
</form>
3.访问http://localhost/index.php, 通过修改”$len=1000;”这行1000这个数字后点击submit测试各浏览器到地址栏极限。结果为$len所赋值加上”http://localhost/index.php”的46字节的和。
结果如下:
1. Firefox 3.0.3: 当$len 赋值为4053时出错,可见最长字长4098
2. IE7.0: 2083, 结果与官方说法一致
3. Opera 9.60: 4098 , Firefox3.0.3 相同
4. google chrome 0.2.149.30: 4098, 与Firefox3.0.3,Opera 9.60相同
可见Firefox, Opera, Chrome 虽然各自使用了不同的内核,至少在地址栏长度上有高度的默契。
另外,如果用POST方式传递数据,无论传递数据有多大,结果只会让浏览器死掉而不是报错。因为post的数据是放在header里传输的。可见POST传递数据无限制的传言基本上可以认为是正确的。
分享到:
相关推荐
IE的RUL长度为2083字节。但是有的时候需要传递更长的URL参数
其实,只要能播放(如视频音频文件),则播放后它就已经在你的IE缓存中了。 那么我们怎么从缓存中找到这个文件呢? 我写的这个代码,就是让你根据它的URL,来得到它的文件名, 然后去缓存中复制吧!
6、ie6或者ie7在后台网站设置视图中的js错误。 7、修复了找回密码链接地址错误问题。 8、修复了url在伪静态情况下生成sitemap路径错误的bug。 9、修复了浏览器切换引擎时产生safecode错误。 10、修复了文件扩展...
先说一下今天遇到的问题 一个导出excel的处理,在按钮按下后需要传很大一个数据到后台,刚开始的做法如下: 代码如下:var ...导致这个问题的原因是各种浏览器对URL解析的长度限制是不同的,ie就是最小的那个,
代码如下:Request-URI Too Large The requested URL’s length exceeds the capacity limit for this server.关于上面说的这个 Request-URI Too Large...另外据说http协议是没限制URL长度?使用浏览器发送GET请求会受浏
IE6.0 :url最大长度2083个字符,超过最大长度后无法提交。 IE7.0 :url最大长度2083个字符,超过最大长度后仍然能提交,但是只能传过去2083个字符。 firefox 3.0.3 :url最大长度7764个字符,超过最大长度后无法提交。...
IE6.0 :url最大长度2083个字符,超过最大长度后无法提交。 IE7.0 :url最大长度2083个字符,超过最大长度后仍然能提交,但是只能传过去2083个字符。 firefox 3.0.3 :url最大长度7764个字符,超过最大长度后无法提交。...
日期校验 ie6 出错,慎用。 6 dateISO:true 必须输入正确格式的日期(ISO),例如:2009-06-23,1998/01/22。只验证格式,不验证有效性。 7 number:true 必须输入合法的数字(负数,小数)。 8 digits:true 必须输入...
FIX 修正 IE8 下文章列表缩略图 BUG FIX 帖子推送到文章中的图片不再进行权限限制,均可查看 FIX 后台日志管理分页参数 FIX DIY模块 特殊主题过滤 的默认值 FIX 默认不做模板中是否包含...
2.兼容IE6,IE7,FF 3.支持input显示与value分离【以隐藏域方式提交数据】 4.支持下拉框按钮 5.支持显示结果数量 6.可以一个页面多次使用 7.模拟下拉框不会被select遮挡 8.调用更方便(内核已改为jq插件) 9.皮肤修改...
101.6 浏览和编辑子数据表中的相关记录 111.7 使Jet和SQL Server 7.0/MSDE数据库 相一致 111.8 Access在2000年问题上的改进 121.8.1 四位数年份选项设置 121.8.2 数据库窗口 131.8.3 窗体和报表 141.8.4 名称自动...
101.6 浏览和编辑子数据表中的相关记录 111.7 使Jet和SQL Server 7.0/MSDE数据库 相一致 111.8 Access在2000年问题上的改进 121.8.1 四位数年份选项设置 121.8.2 数据库窗口 131.8.3 窗体和报表 141.8.4 名称自动...
101.6 浏览和编辑子数据表中的相关记录 111.7 使Jet和SQL Server 7.0/MSDE数据库相一致 111.8 Access在2000年问题上的改进 121.8.1 四位数年份选项设置 121.8.2 数据库窗口 131.8.3 窗体和报表 141.8.4 名称自动更正...
101.6 浏览和编辑子数据表中的相关记录 111.7 使Jet和SQL Server 7.0/MSDE数据库 相一致 111.8 Access在2000年问题上的改进 121.8.1 四位数年份选项设置 121.8.2 数据库窗口 131.8.3 窗体和报表 141.8.4 名称自动...
101.6 浏览和编辑子数据表中的相关记录 111.7 使Jet和SQL Server 7.0/MSDE数据库相一致 111.8 Access在2000年问题上的改进 121.8.1 四位数年份选项设置 121.8.2 数据库窗口 131.8.3 窗体和报表 141.8.4 名称自动更正...
101.6 浏览和编辑子数据表中的相关记录 111.7 使Jet和SQL Server 7.0/MSDE数据库相一致 111.8 Access在2000年问题上的改进 121.8.1 四位数年份选项设置 121.8.2 数据库窗口 131.8.3 窗体和报表 141.8.4 名称自动更正...
101.6 浏览和编辑子数据表中的相关记录 111.7 使Jet和SQL Server 7.0/MSDE数据库 相一致 111.8 Access在2000年问题上的改进 121.8.1 四位数年份选项设置 121.8.2 数据库窗口 131.8.3 窗体和报表 141.8.4 名称自动...
101.6 浏览和编辑子数据表中的相关记录 111.7 使Jet和SQL Server 7.0/MSDE数据库相一致 111.8 Access在2000年问题上的改进 121.8.1 四位数年份选项设置 121.8.2 数据库窗口 131.8.3 窗体和报表 141.8.4 名称自动更正...
101.6 浏览和编辑子数据表中的相关记录 111.7 使Jet和SQL Server 7.0/MSDE数据库相一致 111.8 Access在2000年问题上的改进 121.8.1 四位数年份选项设置 121.8.2 数据库窗口 131.8.3 窗体和报表 141.8.4 名称自动更正...
101.6 浏览和编辑子数据表中的相关记录 111.7 使Jet和SQL Server 7.0/MSDE数据库相一致 111.8 Access在2000年问题上的改进 121.8.1 四位数年份选项设置 121.8.2 数据库窗口 131.8.3 窗体和报表 141.8.4 名称自动更正...