如何使用Jquery逐步获取PHP数据?

时间:2012-08-20 20:37:47

标签: javascript php jquery multi-step

我在使用php组合的jquery时遇到了一些问题。让我先从代码开始。

PHP代码:

if ($_POST["request"]==10)
    progress();

function progress()
{
    $files = getfiles();
    $progress = 0;
    $progressRate = 100/$files->number;
    for ($i=0;$i<$files->number;$i++)
    {
        sendfile($files->location[$i]);
        $progress+=$progressRate;
        echo $progress;
    }
}

代码输出: 例如files-&gt; number = 2则输出为50 100。

Jquery代码:

jQuery.post("functions.php",{request:10},function(data){

            alert(data);


   });

问题:我想要的是首先警告50,然后警告100,我的意思是当第一个循环在php结束并回声第一个进度值时,然后jquery应该能够拦截它,但jquery在整个循环结束后警告数据,这意味着我在一个警报中得到50100,jQuery有什么方法可以处理这个?我知道有其他解决方案使用PHP并生成例如隐藏div或属性中的循环数,然后在jQuery中使用循环,但我真的想直接这样做。

2 个答案:

答案 0 :(得分:5)

这不是AJAX的工作方式。它只发出一个请求并对响应做了“某事”,就像浏览器导航到URL时一样。

PHP脚本将在服务器端执行,将结果打印到“屏幕”并作为响应发回。

如果要返回多个变量,则应将它们作为JSON数据返回,并在javascript中解析JSON字符串。

答案 1 :(得分:0)

jQuery(默认情况下实际上是AJAX)仅在服务器完成请求后才返回响应。

因此,无法对php页面执行单个请求并获得多个响应。 一种方法是使用带有upload progress支持的php,但我怀疑这对你的情况有帮助,因为它只是用于上传文件。