【问题标题】:Page won't alert when XMLHttpRequest is doneXMLHttpRequest 完成时页面不会发出警报
【发布时间】:2013-02-24 23:50:53
【问题描述】:

我有一个上传表单,它在使用 AJAX 上传文件时显示状态栏。上传完成后,我希望用户知道,但完成后什么也没有发生,但我告诉它提醒“完成”。

我的代码:

UploadB.click(function(event)
            {
                event.preventDefault();
                event.stopPropagation();

                var FInput = $('#Files').val();

                if(FInput != '')
                {
                    var Data = new FormData();

                    var Files = document.getElementById('Files');

                    for(var I = 0; I < Files.files.length; ++I)
                    {
                        var FilesName = Files.files[I].name;

                        Data.append('File[]', Files.files[I]);
                    }
                    var Request = new XMLHttpRequest();
                    Request.upload.addEventListener('progress', function(event)
                    {
                        if(event.lengthComputable)
                        {
                            Percent = event.loaded / event.total;
                            Progress = document.getElementById('Progress');
                            Loaded = Math.round(Percent * 100);

                            $('#Progress').progressbar({
                                value: Loaded
                            });
                        }
                        else
                        {
                            $('#Progress').text('There Was An Error Getting The Percent');  
                        }
                    });

                    Request.upload.addEventListener('load', function(event)
                    {

                    });

                    Request.upload.addEventListener('error', function(event)
                    {
                        alert('Upload Failed.');
                    });

                    Request.upload.addEventListener('readystatechange', function(event)
                    {
                        if(this.readyState == 4)
                        {
                            if(this.status == 200)
                            {
                                alert('Done.');
                            }
                            else
                            {
                                alert('There Was An Error, Either Try Again Or Contact Us');
                            }
                        }
                    });

                    Request.open('POST', 'Upload.php');
                    Request.setRequestHeader('Cache-Control', 'no-cache');
                    Progress.style.display = 'block';
                    Request.send(Data); 
                }
                else
                {
                    alert('Please Select A File / Files');  
                }
            });

【问题讨论】:

  • 假设您的请求确实有效...尝试移动您的 readystatechange 侦听器并将其放在打开并发送数据的代码块之前。
  • 我之前有过这个,然后我认为它会起作用。
  • 但还是不行。
  • 一切正常。并且文件被上传,但它不会提醒
  • 您的请求有效吗?而且,readystatechange 会执行吗?如果是,请检查 readyState 和 status 值。

标签: php javascript jquery ajax xmlhttprequest


【解决方案1】:

据我所知,readystatechange 事件仅在 XMLHttpRequest 上触发,而不在 XMLHttpRequest.upload 上触发。

试试:

Request.addEventListener('readystatechange', function(event) {
    if(this.readyState == 4)
    {
        if(this.status == 200)
        {
            alert('Done.');
        }
        else
        {
            alert('There Was An Error, Either Try Again Or Contact Us');
        }
    }
});

【讨论】:

    猜你喜欢
    • 2012-04-30
    • 1970-01-01
    • 2017-08-06
    • 2013-05-10
    • 2019-05-06
    • 1970-01-01
    • 2012-08-17
    • 2010-11-20
    • 2014-05-27
    相关资源
    最近更新 更多