Xhr请求禁用其他AJAX请求

时间:2013-08-08 07:06:25

标签: jquery ajax xmlhttprequest

所以我注意到我今晚正在测试的网站上有一个错误。它发生在图像页面上,页面工作正常,我可以更改图像的状态(主要或次要)并删除它们,导航到其他页面等。

因此我浏览的部分是(基本上,它抓取当前页面,请求的页面,以及特定于该页面的任何formdata,验证服务器端)

...
var formData = $("#eventForm").serializeArray();
//testing bit for xhr happens here (explained later)
$.ajax({
    url: "pageTemplates/createEvent.php",
    type: "POST",
    data: {page:page,formData:formData},
    cache:false,
    success: function(result) {
        $(".Account-data").html(result);
    }
})
...

但是,一旦我上传图片,我无法导航到任何其他页面。图片上传位在这里:

...
 var imgData = new FormData();
$.ajaxSetup({
    data:{type:type}
})
imgData.append('imageFile',$("#imageFile")[0].files[0]);
$.ajax({
    url: "pageTemplates/imageUpload.php",
    type: "POST",
    xhr: function() {
        myXhr = $.ajaxSettings.xhr();
        return myXhr;
    },
    data: imgData,
    cache: false,
    contentType: false,
    processData: false,
    success: function(result) {
        $("#imagesData").append(result);
        $("#imageFile").html("<input type='file' name='imageFile' id='imageFile' onchange='imageUpdate(this)' />");
    }
});
...

我设法将问题追溯到设置xhr,测试xhr表明即使在图像上传发生后它仍然存在。

我有办法在图片上传发生后禁用XHR吗?还是某种方式来解开它?或者我应该采用完全不同的方式处理这个问题?

1 个答案:

答案 0 :(得分:0)

好的,我明白了。我意识到镜像上传在其他地方工作得很好。所以我基本上只是复制/粘贴了代码并改变了表单索引,并且它起作用了。

所以这个:

var imgData = new FormData();
$.ajaxSetup({
    data:{type:type}
})
imgData.append('imageFile',$("#imageFile")[0].files[0]);

变成了:

var formData = new FormData($("form")[1]);

在某些方面稍微难以维护,在其他方面更容易维护。