一个jsp页面通过一个按钮触发一个后台任务,

J2EE 码拜 9年前 (2015-05-10) 850次浏览 0个评论

一个jsp页面通过一个按钮触发一个后台任务,这个任务可能要执行10几分钟,我想让用户在这段时间可以做其他的事情,反正就是不要傻等着,于是我弹出一个dialog提示框,然后ajax去后台执行任务,但是框没弹出来,页面也啥都点击不了

排除多线程解决方法

<a onclick="go();" class="easyui-linkbutton" data-options="iconCls:""icon-search""">开始</a>
	<div id="view_dialog" title="数据获取" class="easyui-dialog"  
			data-options="closed:true">  
		数据爬取中,可能会耗费一些时间,您可以先做些其他操作
	</div>  


<script language="javascript">
	function go(){
			$(""#view_dialog"").dialog(""open"");
			$.ajax({
		        type: "post",
		        url: "<%=request.getContextPath()%>/xx/xx/xx_getData.action",
		        dataType: "json",
		        async: false,
		        success: function (data) {
		            if (!data.success) {
		                alert("数据获取失败");
		            } else {
		            	alert("数据获取完成");
		            }
		            $(""#view_dialog"").dialog(""close"");
		        },
		        error: function (textStatus) {
		            alert("数据获取失败");
		            $(""#view_dialog"").dialog(""close"");
		        }
		    });
	}
</script>
连接超时了???
10分
async: true
改为异步调用
10分
async: false, 改为 async: true,
10分
 改为 async: true,试试
10分
ajax分为同步和异步。同步就是等待后后返回数据后,jsp页面再执行相关操作。异步就是不用等后台,该干嘛干嘛。后台数据到了,再调你前台的方式执行。

你async: false表示你用的同步,自然要等后台返回数据了,再执行的弹出框操作。完了你后台执行10多分钟,当然一时半会儿弹不出来了。
你的流程是这要:
function  go(){
   alert(“数据爬取中,可能会耗费一些时间,您可以先做些其他操作”)
   异步ajax请求(包含你回调的方法)……..
}

function  回调的方法(){
    后台执行10多分钟完成后,再行操作。
}


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明一个jsp页面通过一个按钮触发一个后台任务,
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!