日期:2014-05-16  浏览次数:20720 次

ajax传递长字符窜

用ajax把table中的内容传到后台,但是试了几种方法ajax不会调用后台,才发现是请求参数值过长导致。

?

下面是解决方案:

?

修改使用的XMLHTTP的请求为POST,并且把参数和URL分离出来提交

?

?

function sAjaxRequest(){
?var? record = save_record();
?xmlRequest = getXMLHttpRequestObject();
?alert("xmlRequest"+xmlRequest);
?if(xmlRequest==null){
??alert("您的浏览器不支持AJAX!");
??return false;
?}
?var url = "sendoasys.do";


?var? para = "record="+encodeURIComponent(record);????? ----- encodeURIComponent 函数的应用


?xmlRequest.onreadystatechange = dataChanged;


?xmlRequest.open("POST",url,false);???? -----提交方式未post


?xmlRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');
?

xmlRequest.send(para);? // 发送请求???? -----请求参数单独提交
}

?

?

?

注: encodeURIComponent 返回一个包含了 charstring 内容的新的 String 对象(Unicode 格式), 所有空格、标点、重音符号以及其他非 ASCII 字符都用 %xx 编码代替,其中 xx 等于表示该字符的十六进制数。例如,空格返回的是 "%20" 。 字符的值大于 255 的用 %uxxxx 格式存储。参见 JavaScript 的 encodeURIComponent() 方法.

?