AJAX报告PHP的进展

时间:2014-03-17 12:07:50

标签: php jquery ajax

首先,我已经看过并测试了下面的解决方案,但没有一个工作(他们没有检索任何输出)。

  1. https://gist.github.com/db/966388
  2. What is the cleanest way to get the progress of JQuery ajax request?
  3. PHP ajax remote call to check progress
  4. 所以,我试图根据我的需要调整代码..我的ajax如下:

    $.ajax({
        type: "POST",
        url: "/getAll",
        data: {name: name, age: age, from_where: from_where},
        async: true,
        success : function(data) {
            console.log(data);
        },
    });
    

    success function的问题在于它只在处理完整个PHP代码后才执行(至少我已经尝试过了)。

    $loaded = 0;
    $total = 18; // just for testing
    
    foreach($cust->find("NY") as $div){
        $cust->add($name, $div->description("NY"), $age);
        $loaded++;
        echo round(floatval(($loaded / $total) * 100), 2) . "%";
        // It can't be return instead of echo because it STOPs at the first index
    }
    

    此代码的唯一问题是成功函数仅在执行整个PHP代码后调用。所以,我正在寻找在PHP循环中输出百分比的方法。

    有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我的代码我在网上的某处与你在第二个链接中发布的代码非常相似。

var jqXHR = $.ajax(
{
    xhr: function() 
    {
        var xhrobj = $.ajaxSettings.xhr();
        if (xhrobj.upload) 
        {
            xhrobj.upload.addEventListener('progress', function(event) 
            {
                if (status != null)
                {
                    var percent = 0;
                    var position = event.loaded || event.position;
                    var total = event.total;
                    if (event.lengthComputable) 
                    {
                        percent = Math.ceil(position / total * 100);
                    }
                    status.SetProgress(percent);
                }
            }, false);
        }
        return xhrobj;
    },
    url: uploadURL,
    type: "POST",
    success: function(data)
    {
        var diff = new Date() - time;
    },              
    error: function(jqXHR, textStatus, errorThrown )
    {
        alert(textStatus);
    },
    complete: function(jqXHR, textStatus)
    {
    }
}); 

这适合我。