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

ajax碰到请求url过长的问题!
一个超大文本框textarea里面有大量数据,ajax通过URL请求service返回结果,URL里面包含了各种参数,当然也包含之前的超大文本框的内容。

之前开发的时候一直用Firefox在调试,4000长度的字符串在textarea里面通过URL请求都是没有问题。
提交给测试的时候问题来了,测试人员在IE下面发现问题,textarea里面字符长度超过2000(大概数据)时,会报JS错误,ajax没有返回值给前台。

看原先代码:

function getJsonData(url) 
{ 
  var ajax = Common.createXMLHttpRequest(); 
  ajax.open("GET",url,false); 
  ajax.send(null); 
  try 
  { 
   eval("var s = "+ajax.responseText); 
   return s; 
  } 
  catch(e) 
  { 
   return null; 
  } 
} 
function getData(){ 
var url="BlacklistService.do?datas="+datasvalue; 
var result = getJsonData(url); 
} 

网上google发现解决办法:
修改使用的XMLHttp的请求为POST,并且把参数和URL分离出来提交。

修改后代码如下:

function getJsonData(url,para) 
{ 
  var ajax = Common.createXMLHttpRequest(); 
  ajax.open("POST",url,false); 
  ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 
  ajax.send(para); 
  try 
  { 
   eval("var s = "+ajax.responseText); 
   return s; 
  } 
  catch(e) 
  { 
   return null; 
  } 
} 
function getData(){ 
var url="BlacklistService.do"; 
var para="datas="+datasvalue; 
var result = getJsonData(url,para);
}