论坛首页 Web前端技术论坛

关于xmlHttp.open("POST",url,true);url长度问题

浏览 11927 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-12-14  
当fracasTree选择的结点过多的时候,fracasNodeStr会很长,url也就很长,这个时候页面显示有
错误:未指明的错误    用Microsoft Script Debugger 调试显示是xmlHttp.open("POST",url,true); 错误
会不会是url长度超出了啊   该怎么解决

其中fracasNode[0]和fracasNode[4]是32位ID 其他的是1位的
save()方法
//保存操作员权限
function save(){
  if(Common.isEmpty(fracasOperator.actionFlag.value)){
    alert("请点击修改按钮!");
    return;
  }
  var fracasNodeStr="";
  fracasNodeStr=getCheckedFracasNodeStr(eval("fracasTree"),fracasNodeStr);//生成功能权限串
  var url="controler?actionId="+fracasOperator.actionId.value;
  url+="&actionFlag="+fracasOperator.actionFlag.value;
  url+="&operatorId="+fracasOperator.operatorId.value;
  url+="&fracasNodeStr="+fracasNodeStr;
  var xmlHttp=Common.createXMLHttpRequest();
  xmlHttp.onreadystatechange = Common.getReadyStateHandler(xmlHttp, eval("turnOperatorPage"));
  xmlHttp.open("POST",url,true);
  xmlHttp.send();
  fracasOperator.reset();
}

//取得选中得功能节点串
function getCheckedFracasNodeStr(fracasNode,fracasNodeStr){
  if(fracasNode[3]!="1"){//未选中
    return fracasNodeStr;
  }
  fracasNodeStr+=fracasNode[0]+"_"+fracasNode[5]+fracasNode[6]+fracasNode[7]+"$"+fracasNode[4]+",";
  if(fracasNode.length>8){//有孩子,递归
     for(var i=8;i<fracasNode.length;i++){
       fracasNodeStr=getCheckedFracasNodeStr(fracasNode[i],fracasNodeStr);
     }
  }
  return fracasNodeStr;
}
   发表时间:2006-12-14  
没用过这个东西,既然url太长,能否修改你使用的xmlhttp的请求为post,参数和url分离出来提交呢?
0 请登录后投票
   发表时间:2006-12-14  
谢谢楼上的jianfeng008cn
根据你的提示,将url和参数分开就解决了,初学者没有见识,大家见笑了
具体方法如下    希望对和我一样的初学者有点帮助

只修改save()方法  如下

//保存操作员权限
function save(){
  if(Common.isEmpty(fracasOperator.actionFlag.value)){
    alert("请点击修改按钮!");
    return;
  }
  var fracasNodeStr="";
  fracasNodeStr=getCheckedFracasNodeStr(eval("fracasTree"),fracasNodeStr);//生成功能权限串
  
  var url="controler?actionId="+fracasOperator.actionId.value;
  url+="&actionFlag="+fracasOperator.actionFlag.value;
  url+="&operatorId="+fracasOperator.operatorId.value;
//  url+="&fracasNodeStr="+fracasNodeStr;
  var fracasStr = "fracasNodeStr="+fracasNodeStr;
  var xmlHttp=Common.createXMLHttpRequest();
  xmlHttp.onreadystatechange = Common.getReadyStateHandler(xmlHttp, eval("turnOperatorPage"));
  xmlHttp.open("POST",url,true);
  xmlHttp.setRequestHeader( " Content-Type " , " application/x-www-form-urlencoded " );
  xmlHttp.send(fracasStr);
  fracasOperator.reset();
}
0 请登录后投票
   发表时间:2006-12-14  
把多于的参数放在xmlHttp.send()中传,何必把URL写那么长呢!
0 请登录后投票
   发表时间:2006-12-14  
xmlHttp.send(); 它可以带参数传递。
但你在调用send()方法之前要调用xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');,不然会得不到数据。
5 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics