首页 > 解决方案 > XMLHTTPRequest 处理事件

问题描述

我正在迭代的 php 脚本上执行 Ajax (JQuery) 请求。在每次迭代中,我都会对循环计数器的值进行“回显”,用 JSon 编码。目标是管理进度条的显示。

通过这样做,我希望通过“progress”事件在单独的响应中拦截和检索每个计数器值。实际上我只有一个包含所有计数器值的答案。我的研究总是让我找到有关下载文件的信息,这不是我的情况。

也许我应该使用“onreadystatechange”事件,但我不知道如何将它放入我的代码中:$ Ajax 参数或单独的函数?如果有人有解决我问题的想法。

这是我的 JS 代码

function DiffuseOffre(envoi, tab, paquet, dest) {
//$('#cover-spin').show(0);
$("#xhr-rep").css("display", "block");
var server = '/Admin/Offres/DiffuseOffre.php';
$.ajax({
    url: server,
    type: 'Post',
    dataType: 'json',
    data: {
        envoi: envoi,
        tab: tab,
        paquet: paquet,
        dest: dest
    },
    xhr: function() {
        var xhr = new window.XMLHttpRequest();
        xhr.addEventListener("progress", function(evt) {
            if (evt.lengthComputable) {
                var compteur = evt.text;
                $("#xhr-rep").html(compteur);
            }
        }, false);
        return xhr;
    },
    success: function(msg) {
        //$('#cover-spin').css("display", "none");
        $('#xhr-rep').css("display", "none");
        if (msg.hasOwnProperty('erreur')) {
            $("#dialog-erreur").html(msg.erreur);
            $("#dialog-erreur").dialog("open");
            $("#dialog-erreur").dialog({
                width: '600px',
                title: msg.title
            })
        } else {
            $("#dialog-message").html(msg.message);
            $("#dialog-message").dialog("open");
            $("#dialog-message").dialog({
                width: '600px',
                title: msg.title
            })
            if (paquet == 1) {
                $("#envoi_" + dest).remove();
                $("#diffuser").remove();
            }
            if (msg.hasOwnProperty('encours')) {
                $("#en_cours").html(msg.encours);
            }
            if (msg.hasOwnProperty('fieldset')) {
                $("#" + msg.fieldset).remove();
            }
        }
    }
})

}

标签: ajaxonreadystatechange

解决方案


推荐阅读