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

高手进++ web项目如何请求一次返回多次?
最近做了一个交换机管理的项目,有一个批设置要求实现读取、替换、统一设置功能,批设置弹出层中有多个选项和选择处理的开始行数和结束行数。如:用户在批设置中选择一个处理项,进行读取功能操作返回数据大量数据,我想让它一部分一部分的返回,如果处理完再返回后动态修改页面上的数据,因为数据量大就会很卡!! 注意:这个项目不适用分页功能
在其他论坛上看到一个解决方法是,用两个ajax请求,一个发送处理请求。另一个不停的去刷结果;问题是不知道怎么做,烦恼;

求高手解答????????
------最佳解决方案--------------------
代码已测试

前台代码:(为方便使用了jquery的ajax,你要测试请同样引入jquery文件,也可略微改动使用原生ajax)

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
</head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
  var url=document.URL;
  
  ///index:调用时直接传0,
  ///callback:所有数据获取完成后的回调函数,会获得结果字符串
  ///nowdata:调用时不要传递
  function getdata(index,callback,nowdata)
  {
    if(!nowdata) var nowdata="";
    $.get(
  url+"?type=data&index="+index+"",
  {},
      function(str)
      {
        var backdata=eval(str);
        nowdata+=backdata.str;
        if(backdata.isEnd=="False")///若没有结束标志,递归调用发ajax请求
        {
          getdata(index+1,callback,nowdata);
        }
        else///结束标志为真,结束递归,调用回调函数,返回结果
        {
          if(callback) callback(nowdata);
          return;
        }
      }
    )
  }
  getdata(0,function(data){
    alert(data);
    var resobj=eval(data);//解析json字符串,得到数组
    alert(resobj.length);
  });
</script>
<body>
    <form id="form1" runat="server">
    <div>
    
    </div>
    </form>
</body>
</html>

后台代码:(使用了stringbuilder,请using System.Text命名空间)

protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.QueryString["type"] == "data")//判断是否是请求数据的ajax请求
            {
                int index =int.Parse(Request.QueryString["index"]);
                if (index == 0)//若序号为0,说明是第一次请求,当调用函数获取数据
                {
                    data = getData();
              &n