0

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

所以我导航的部分是(基本上,它抓取当前页面、请求的页面以及特定于该页面的任何表单数据,经过验证的服务器端)

...
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?或者有什么方法可以取消它?还是我应该以完全不同的方式处理这个问题?

4

1 回答 1

0

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

所以这:

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

变成了:

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

这在某些方面会更难维护,在其他方面更容易维护。

于 2013-08-08T15:49:05.160 回答