2012-01-31 136 views
2

我有一个通过ajax调用执行的sql查询,但我需要能够检查它的进度并更新进度条。

这里是我的简单的Ajax调用(使用JQuery):

var strResult = (($.ajax({url: URL,async: true}).responseText)); 

任何想法如何,我听更改更新了吧?

PS。这个问题与SQL无关。

+0

哪个数据库系统?并非所有人都提供进度信息。 – Polynomial 2012-01-31 16:10:17

+0

这不是真正的问题!但是,sql语句是循环的,所以我可以回发回声。 – ojsglobal 2012-01-31 16:17:23

+0

可能的重复:http://stackoverflow.com/questions/399641/ajax-page-download-progress – tkone 2012-01-31 16:37:16

回答

-1

如果您可以将查询分解为多个可单独执行的组件,则可以不断询问服务器的进度。

例如,如果你需要插入大量的数据到数据库,而不是使一个巨大的请求到DB:

INSERT INTO table VALUES (..), (..), .. ; 

可以分解成许多插入语句:

INSERT INTO table VALUES (..); 
... 
INSERT INTO table VALUES (..); 

然后在任何阶段,你总是可以计算可以给你的百分比的行数。

例如,你知道你想插入20000行。然后,使用一个AJAX调用,这将做到这一点的服务器:

SELECT COUNT(*) FROM table 

将返回一个人数多达20000可以计算出百分比。

另一种解决方案是使用websockets,但这将需要大量的配置。

+1

同样,这不是真正的问题。这个问题与SQL无关。 我想知道我如何可以听到异步的ajax调用? 我可以添加某种Eventlistener吗? – ojsglobal 2012-01-31 16:33:19

+1

你是什么意思听。 ajax请求很简单。步骤1.您提出请求。第2步:服务器处理它。第3步。服务器返回答案。在步骤2时,除非使用Web套接字,否则无法与服务器通信。他们的唯一方法是同时进行两个Ajax请求。首先请求你想要的动作。其次,要轮询第一个进展。 – miki725 2012-01-31 16:37:22