有人可以解释这个ajax代码的作用吗?

时间:2011-05-24 20:04:50

标签: javascript ajax jsp

有人可以解释这个ajax代码的作用吗?

function ajaxProgress(){
 //Math.random() is for bitchy ie to prevent caching the xml.
 $.get('sample.ff?do=progressInfo&type=sampletype&dummy='+Math.random(), { dataType:   'xml'},      function(xml) {
 //if the import is running get infos about the progress...
 if($('/importProgress/running', xml).text() == 'true') {
 //..there are no infos yet, so it was just started..
 if($('/importProgress/progress', xml) == null || $('/importProgress/progress', xml).text() == ''){
 //do something
 }
 ..........
 setTimeout( "ajaxProgress()", 1000);

1 个答案:

答案 0 :(得分:2)

此函数每秒递归调用自身。它向Import.ff发送一个AJAX GET请求,并传递3个查询字符串参数:do=progressInfotype=sampletype和一个随机数。此随机数附加到URL,因为GET请求由浏览器缓存,并且由此确保它在每个请求上从服务器获取新内容。

服务器本身发送XML文件作为响应。此XML文件包含一些节点,如:

<importProgress>
    <running>true</running>
    <progress>20</progress>
</importProgress>

因此脚本在AJAX请求的成功回调中解析此XML。它尝试获取runningprogress节点的值。如果running=true则检查是否存在进度节点并对其进行一些处理。最后,它使用setTimeout函数在1秒后自行调用。等等。

所以基本上这个脚本通过使用AJAX GET请求以1秒的间隔轮询服务器并解析响应来报告某些服务器操作的进度。