论坛首页 Web前端技术论坛

xmlhttp能不能发送大量数据?

浏览 8408 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2004-12-13  
如果放弃Form提交,改用xmlhttp的话,那么当用户填写了大量数据(比如textarea)该如何处理?

原因:xmlhttp传递由js封装的xml到servlet中,js的变量不能容纳太大的内容,这个时候该如何处理?
   发表时间:2004-12-13  
引用
js的变量不能容纳太大的内容


这个怎讲? 愿闻其详.
0 请登录后投票
   发表时间:2004-12-13  
就象使用js构造结构树一般,如果展开的节点太多了,IE就会变的很缓慢。

JS做前台的controller确实不错,不过要用它去加载大量的数据,恐怕力有不逮。
0 请登录后投票
   发表时间:2004-12-14  
还有一个问题。

我认为通过xmlhttp传递到Servlet中的其实是一个按照XML格式编写的字符串,能不能直接dom对象传递过去? 如果可以,后台该如何接收?
0 请登录后投票
   发表时间:2004-12-15  
如果处理大量数据, js在客户端执行可能回造成响应满等等弊端, 不过我觉得大部分应该可以通过改进设计避免这种一次处理大量数据的情况;

至于与后台Servlet至今传递对象的问题, 我只想反问一句, 在两个异构的系统之间传递数据,有比字符串更合适的方法么?
0 请登录后投票
   发表时间:2004-12-15  
js和servlet之间是不可能传递对象的,对于复杂的数据结构或者打数据量建议还是采用form方式提交!
0 请登录后投票
   发表时间:2004-12-23  
可以发送的,有时业务需要,不可避免的会出现大量数据的提交,这是我写的一段代码,在实际的项目中解决了大量代码提交的问题,欢迎大家指教:
String.prototype.trim = function();{
    return this.replace(/(^[\s]*);|([\s]*$);/g, "");;
}

var pop;
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");;
function update();{   
    var arr = new Array();;
    var node= document.getElementsByTagName("td");;  
    var rcount = 0;
	for(var i=2;i<node.length-1;i=i+2);{
	  temp="";
	  for (var j=0;j<node[i].children.length;j++);{		
	    var temp = temp+(node[i].children[j].value);.trim();+";";
      }

      arr[rcount]=temp.trim();;     
	  rcount++;
    }
  try{
	var DataToSend = "nodes="+URLEncoding(arr);;
	url = "upRefvalue.jsp";
	winpopup();;
	xmlhttp.onreadystatechange = getReady;
    xmlhttp.open("POST",url,true);;
	xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");;
    xmlhttp.send(DataToSend);;
  }
  catch(e);{
    alert(e.description);;
  }
}

function streamtochar(StrStream);
{
  var stream = new ActiveXObject("ADODB.Stream");;
  stream.type = 1;
  stream.Mode = 3;
  stream.Open(); ;
  stream.Write(StrStream);;
  stream.Position = 0;
  stream.Type = 2;
  stream.Charset = "GB2312";
  var result = stream.ReadText();;
  stream.Close();;
  stream = null;
  return result;
}

function getReady();{
  if(xmlhttp.readyState == 4);{
    if(xmlhttp.status == 200);{
	  pop.hide();;
	  window.close();;
    }
    else{
	  childDropDown.innerHTML = "数据装载失败,原因:" + xmlhttp.statusText;
    }
  }
}

function winpopup();{
  var left = (screen.width-200);/2;
  var top = screen.height/2;
  pop = window.createPopup();;
  pop.document.body.innerHTML = "<body><font size='2'>正在提交数据,请稍候...</font></body>";
  pop.show(left,top,300,60,document.body);;
}
0 请登录后投票
   发表时间:2004-12-23  
从你的代码中,我看不出怎么解决“大”段数据传送的问题?

感觉只是普通的XMLHTTP传送。。。

如果有奥妙之处,还望指出。
0 请登录后投票
论坛首页 Web前端技术版

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