用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() 方法.