0

我对带有 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->number = 2 那么输出将是 50 100。

jQuery代码:

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

            alert(data);


   });

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

4

2 回答 2

5

这不是 AJAX 的工作方式。它发出一个请求并对响应执行“某些操作”,就像浏览器在导航到 URL 时所做的那样。

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

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

于 2012-08-20T20:45:06.347 回答
0

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

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

于 2012-08-20T20:47:31.293 回答