所以我注意到我今晚正在测试的网站上有一个错误。它发生在图像页面上,页面工作正常,我可以更改图像的状态(主要或次要)并删除它们,导航到其他页面等。
因此我浏览的部分是(基本上,它抓取当前页面,请求的页面,以及特定于该页面的任何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吗?还是某种方式来解开它?或者我应该采用完全不同的方式处理这个问题?
答案 0 :(得分:0)
好的,我明白了。我意识到镜像上传在其他地方工作得很好。所以我基本上只是复制/粘贴了代码并改变了表单索引,并且它起作用了。
所以这个:
var imgData = new FormData();
$.ajaxSetup({
data:{type:type}
})
imgData.append('imageFile',$("#imageFile")[0].files[0]);
变成了:
var formData = new FormData($("form")[1]);
在某些方面稍微难以维护,在其他方面更容易维护。