【问题标题】:Jquery, ajax beforeSend not workingJquery,ajax beforeSend 不起作用
【发布时间】:2013-03-28 23:20:41
【问题描述】:

这些是照片上传代码:

$.ajax({
    url: "php/uploadPhoto.php",
    type: "POST",
    data: formdata,
    processData: false,
    contentType: false,
    beforeSend: function(XMLHttpRequest){
        XMLHttpRequest.upload.addEventListener("progress", function(evt){
            if(evt.lengthComputable){
                var percentComplete = evt.loaded / evt.total;
                alert(percentComplete);
            }
        }, false);
    },
    success: function (res) {

    }
});

如果我不添加“beforeSend”部分,它会起作用....

【问题讨论】:

  • 如果你的目的是在使用ajax提交表单时监听上传进度,请看看这个非常有用的jquery插件:malsup.com/jquery/form/#options-object
  • 可能是 beforeSend 中的 JavaScript 错误

标签: jquery ajax file upload progress


【解决方案1】:

试试这个:

$.ajax({
    url: "",
    data: formdata,
    cache: false,
    contentType: false,
    processData: false,
    type: 'POST',
    xhr: function() {
        var myXhr = $.ajaxSettings.xhr();
        if (myXhr.upload) {
            if (myXhr.upload.addEventListener) {
                myXhr.upload.addEventListener('progress', `YOUR CALLBACK`, false);
            } else if(myXhr.upload.attachEvent) {
                myXhr.upload.attachEvent('progress', `YOUR CALLBACK`);
            }
        }
        return myXhr;
    },
    success: function (data) { },
    error: function (jqXHR, textStatus, errorThrown) { }
});

【讨论】:

  • 回调只为我调用一次。我在本地工作,这可能是原因,但它不应该被多次调用以更新我们的进度吗?
  • 没关系,在生产环境中工作,谢谢!
猜你喜欢
  • 2013-04-09
  • 1970-01-01
  • 1970-01-01
  • 2017-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-25
  • 2015-07-19
相关资源
最近更新 更多