`
haitwin
  • 浏览: 9144 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

XMLHttpRequest中URL长度的问题

阅读更多
        
var sUrl = "examtypeaction.phtm?action=setroletypes" + "&roleID="+ roleID +"&examTypeIDs=" + examTypeTree.getCheckedIDs();
        var success = function(o) { 
            var s = o.responseText.toString();  
            var jsonObject = s.parseJSON(o.responseText);
            var result = eval("jsonObject.result"); 
        if (result.resultValue >0) { 
                 alert("配置权限成功!");
        }else{
                alert('系统错误,请与系统管理员联系');
        }
        };
        var callback = {
                success : success
        };
  ***   var req = $C.asyncRequest('POST', sUrl, callback);

 由于examTypeIDs的长度会比较长,再加上url 的其它参数,整个url 提交时将近3400个字符串
 这么长的字符串是不能直接提交的,超过了浏览器的限制(一说是最大长度是2048)
 解决的办法是将url与参数分开,于是修改代码:

        var sUrl = "examtypeaction.phtm?action=setroletypes" + "&roleID="+ roleID;
        var xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
        xmlHttpReq.open("POST", sUrl, false); 
***    xmlHttpReq.setRequestHeader("Content-Type" , "application/x-www-form-urlencoded" );   
***    xmlHttpReq.send("examTypeIDs=" + examTypeTree.getCheckedIDs());   
        var jsonObject = (xmlHttpReq.responseText.toString()).parseJSON(xmlHttpReq.responseText);        
        if(jsonObject) {
                var result = eval("jsonObject.result"); 
        if (result.resultValue >0) { 
                alert("配置权限成功!");
        }else{
                alert('系统错误,请与系统管理员联系');
        }
        }
 

 

修改之后问题成功解决,注意带****号行的区别
当我们将参数放在url中提交的时候,如果内容可能比较长的情况下
应当采用后面代码中的方法,避免出错

 

分享到:
评论

相关推荐

    05-使用XMLHttpRequest对象发送和接收XML数据,及乱码问题的解决.pdf

    3. 解决乱码问题:文件中提到了乱码问题的解决方法。在设置HTTP响应头的Content-Type时,应当指定字符编码为UTF-8。这样做的目的是确保无论服务器是哪种操作系统平台,接收方浏览器都能正确地解析字符编码,从而避免...

    03AJAX-中文字符问题[借鉴].pdf

    2. **中文字符在URL中的编码问题**:由于URL中不能直接包含中文字符,因此需要使用JavaScript函数如`encodeURI()`或`encodeURIComponent()`进行编码。`encodeURI()`用于整个URI的编码,而`encodeURIComponent()`用于...

    Ajax中get和post区别

    在客户端代码中,我们使用XMLHttpRequest对象创建了一个Get请求和一个Post请求,并将参数传递给服务器端。在服务器端代码中,我们使用Request对象来获取参数,并返回结果。 结论 Get和Post请求都是HTTP请求方法,...

    jsp get提交 如何隐藏地址栏中的问号.zip

    标题"jsp get提交 如何隐藏地址栏中的问号"关注的问题是如何在使用GET提交时不让参数出现在地址栏中。默认情况下,GET请求的参数会在URL后面以`?`分隔,然后是键值对的形式。要隐藏这些信息,有以下几种方法: 1. *...

    Ajax技术.docx

    例如,GET请求的URL长度有限制,而POST请求则可以传递大量数据。对于JSON数据,通常使用`JSON.parse()`来解析,而非过时的`eval()`函数,因为`eval()`存在安全风险。 总的来说,Ajax技术是现代Web开发中的重要工具...

    js get和post请求实现代码解析.docx

    但GET请求也有一些限制,例如不能发送大量数据(因为URL长度有限制)、不安全(参数暴露在URL中)等。 ##### GET请求示例代码分析: ```javascript function checkUsername() { // 1. 获取Ajax引擎 var xhr = ...

    Ajax中文手册.docx

    2. **创建XMLHttpRequest对象**:在`showHint()`函数中,会创建一个XMLHttpRequest对象,它是实现异步通信的基础。在示例中,这个过程通过`GetXmlHttpObject()`函数完成,这个函数通常用于检测并返回一个...

    《Ajax与PHP基础教程》第五章

    - **数据长度限制**:不同的浏览器对URL长度有不同的限制,这可能导致在提交大量数据时出现问题。 - **安全性问题**:由于数据被明文显示在URL中,所以不适合传输敏感信息。 - **缓存问题**:GET请求容易被缓存,这...

    xmlHttp ie6下不跨域还提示没有权限,ie8下不会有这错误

    此问题的标题指出“xmlHttp ie6下不跨域还提示没有权限,ie8下不会有这错误”,这涉及到XMLHttpRequest(通常称为XHR)对象在IE6与IE8之间处理跨域请求的差异,以及URL长度限制。 首先,让我们来理解什么是跨域。...

    Ajax中文手册.pdf

    2. **建立连接**:通过XMLHttpRequest对象的open方法,指定请求类型(GET、POST等)、请求URL以及是否异步执行。 3. **发送请求**:调用XMLHttpRequest对象的send方法发送请求,通常发送的数据会被编码并作为参数...

    get、post上传数据到服务器

    缺点则是由于URL长度限制(不同浏览器限制不同,通常为2048个字符),因此不适合传输大量数据。另外,由于GET请求的数据暴露在URL中,所以不适合传递敏感信息。 #### POST方法 与GET不同,POST方法主要用于向服务器...

    Ajax Get、Post请求

    这种方式限制了请求的大小,因为URL长度有限。以下是一个简单的Ajax GET请求示例: ```javascript var xhr = new XMLHttpRequest(); xhr.open('GET', 'https://example.com/api/data?key=value', true); xhr.onload...

    Ajax 简易小例子

    POST请求更适合提交表单数据或修改资源,因为数据不会显示在URL中,且无长度限制。 标签"异步数据传输"揭示了Ajax的主要优势,即在不影响用户交互的情况下,后台加载和更新数据。这种非阻塞的特性使得用户可以继续...

    ajax学习文档

    - 更安全,因为请求参数不会显示在URL中。 - 数据长度理论上无限制。 #### 五、使用AJAX的原则 虽然AJAX能够显著提高Web应用的性能和用户体验,但过度使用也会带来一些问题。例如,过多的异步请求可能会导致...

    prototype ajax提交大数据

    在处理大数据时,通常选择POST请求,因为GET请求的URL长度有限制。POST请求可以将数据放在请求体中,理论上没有长度限制。但需要注意,虽然HTTP协议没有明确规定POST请求体的大小,但实际应用中服务器和浏览器可能有...

    asp异步刷新最好的例子

    在ASP中,POST请求可以在异步刷新时用于提交复杂或大容量的数据,而不会受到URL长度的限制。POST请求不是幂等的,多次执行可能会产生不同的结果。 在ASP中实现异步刷新,通常涉及以下步骤: 1. **创建客户端脚本**...

    Ajax的简单应用,包含说明文档以及相关案例源码

    这种方式适用于获取公开的数据,但受限于URL长度,不适合传递大量数据。 2. POST请求:用于向服务器提交数据,通常用于创建或更新资源。POST请求的数据放置在HTTP请求体中,数据量没有限制,更安全,更适合敏感信息...

    GETMethodLogin.rar_DEMO

    然而,GET方法有一些限制,比如对发送数据的长度有限制,并且数据会显示在URL中,这可能不适用于处理敏感信息如密码。 Ajax允许我们在后台与服务器进行通信,而无需整个页面刷新。它通过JavaScript对象...

    ajax的小工程与资料

    GET请求将数据附加到URL中,适合获取少量数据,但数据可见且有长度限制。POST请求将数据放在请求体中,适合传输大量或敏感数据。 **6. JSONP(JSON with Padding)** 由于同源策略限制,Ajax不能跨域请求。为解决这...

    【Ajax】分别以post,get演示

    这种方式的限制在于URL长度有限,且所有参数可见,可能不适用于敏感数据传输。 2. POST请求:与GET相比,POST能传输更多的数据,并且数据是隐藏在请求体中,不会显示在URL上,因此更适合传递大量或敏感信息。POST...

Global site tag (gtag.js) - Google Analytics