我的html发送请求到服务器,但是服务器要执行一个操作,需要的时间很长,这样的话,html只是返回了一个状态(进度条),告诉user请等待,但是当服务器执行完以后,怎么样再把接下来的html返还给浏览器呢???我想的办法是将服务器的运行结果存储到一个文件里,之后javascript来循环执行一个函数,来读取这个文件,如果读取到这个文件的末尾,就将后来的html发送出去,但是我对js不是很熟,就是懂一些简单的。我想知道这个方法是否可行??如果可行的话,怎么写呢??哪位大人给点代码,主要是打开文件,判断文件结束的部分。如果不可行话,谁能给出其它的办法吗??我现在 实现的是浏览器等待服务器的操作完成,才显示成功,但关键是浏览器等到几分钟就不再等了,直接返回一部分,后面的就不管了。怎么能实现这个请求?????

解决方案 »

  1.   

    js是不可能打开服务器端文件的,用ajax方式,在后台去读取文件,然后把结果返回到前端,js接收后显示。怎么打开文件,怎么判断文件末尾~~看你后台用什么语言了~大同小异
      

  2.   


    用Ajax你可以先启动然后每隔一定的时间用Ajax向服务器查询执行状态,显示给用户如果你想让一个HTTP请求连接保持2个小时,这个想法太疯狂了
      

  3.   


    请问有类似的模型或是代码快吗????我不熟悉AJAX技术
      

  4.   

    我手里没有类似的代码,我从来没有试过要将处理时间如此之长的工作交给web来做。
    Ajax不熟悉你可以使用像Jquery之类的框架,或是AjaxPro也不错。
    至于思路,上面我已经说得很清楚了。
      

  5.   

    执行后台的操作就是执行一个创建snapshot view 的操作,这个怎么用分布,我觉得不可能用分布吧,这个操作会产生很多log,请问:web页面可以动态的显示这些产生的log吗???
      

  6.   

    优化一下后台方法吧....snapshot view这个东西我不知道是什么...没用过,有点孤陋寡闻了....如果你不能解决snapshot view这个要两个小时的开销我不知道怎么帮你了
      

  7.   


    我大体明白你的意思了。哈哈。
    我觉得最好的方法是,让用户发送一个请求过去,然后呢,告诉用户已经开始做了,senssion结束。
    然后到另一个页面中可以查询当然的进度,当然对于一个snapshot的工作来说,进度可能是不可见的,就告诉用户,没结束。然后列个表,告诉用户哪儿工作已经结束了就行了。