我有两个AJAX函数:一个用于图像文件上传,一个用于表单信息上传。
文件上传
function uploadFile(insertNodeID, inputFileID){
var img = document.getElementById(inputFileID).files[0];
var form_data = new FormData();
form_data.append('file[]', img, img.name);
var objXML = new XMLHttpRequest();
objXML.onprogress = updateProgress;
objXML.onload = function() {
if(objXML.readyState==4 && objXML.status==200) {
if(objXML.responseText !== 'no'){
document.getElementById(insertNodeID).src = objXML.responseText;
}
else{
errorInOut('There was a problem uploading the file.');
}
}
};
objXML.open('POST', baseURL+'ajax/admin_fileupload/', true);
objXML.send(form_data);
表单信息上传
function uploadFormInfo(strURL, strData, type) {
strURL = baseURL+'ajax/'+strURL+'/';
var objXML = new XMLHttpRequest();
objXML.onreadystatechange = function() {
if (objXML.readyState == 4 && objXML.status == 200) {
returnXML(objXML.responseText, type);
}
};
objXML.open("POST", strURL, true);
objXML.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
objXML.send(strData);
他们都独立完美地工作。
我遇到的问题是当我调用uploadFormInfo(),然后调用uploadFile()时,document.getElementById(insertNodeID).src不会呈现上传的图像。它仍然将图像上传到服务器,responseText是图像的正确路径。我在插入新图像的时候在id的.src上做了一个console.log,并且.src是正确的但是它在Chome inspect中的元素选项卡中永远不会改变。它在我调用uploadFormInfo()之前也可以正常工作。
我已尝试过多次(为uploadFile发送单独的请求标头)但没有任何效果。
我很难过。