ajax 传参

来源:互联网 发布:觉醒三少成长数据对比 编辑:程序博客网 时间:2024/04/27 22:48

查ajax使用post传参长度问题时觉得不错的一篇日志,拷过来了,修改了下,呵呵。(http://gbtan.javaeye.com/blog/653314)

 

前段时间一个同事遇到一个ajax问题,大致的代码如下:

              var obj;

        if(window.ActiveXObject)

        {

            obj=new ActiveXObject('Microsoft.XMLHTTP');

        }

        else if(window.XMLHttpRequest)

        {

            obj=new XMLHttpRequest();

        }

        obj.open('POST', url, true);

        obj.send(null);

 

这样的写法,当url足够长的时候,ieobj.open('POST', url, true);这一行会报一个“没有权限”的错误。我分析了一下,大概得出如下结论,如果分析的不对,望高手指点:

首先我用google chrome浏览器执行了一下他的代码,没有存在任何的问题,但是ie下却报“没有权限”,于是我猜测可能是url过长,于是试验将url弄的短一点,结果发现没有出现问题,于是我猜测可能是ie对于打开open一个请求,url不能超过2,048字节。结果一查资料发现:

Microsoft Internet 浏览器有 2,083 个字符的最大的统一资源定位符 (URL) 长度。 Internet Explorer 也有 2,048 个字符的最大路径长度。此限制适用于 POST 请求和 GET 请求 url。如果使用的 GET 方法您限于减去实际路径中的字符数的有 2,048 个字符的最大。但是,POST 方法不受大小的提交名称/值对的 URL。在标头中并不在 URL 中传输这些对。 RFC 2616"超文本传输协议--HTTP/1.1"未指定 URL 长度的任何要求。

 

最后得出解决方法,参数在obj.send里面传,url只需写出页面的位置。结果发现,没有问题,一切运行正常

 

obj.send在这里传参好像是没限制呢。。由于时间关系还没查。