无法发送文件+;使用POST AJAX Javascript将表单数据转换为PHP
使用GET方法,我能够使用AJAX成功地将表单数据+文件+其他数据发送到PHP。我得到了想要的结果--$\u得到&$\u文件无法发送文件+;使用POST AJAX Javascript将表单数据转换为PHP,javascript,php,ajax,Javascript,Php,Ajax,使用GET方法,我能够使用AJAX成功地将表单数据+文件+其他数据发送到PHP。我得到了想要的结果--$\u得到&$\u文件 xmlhttp.open("GET", "data.php?controlData="+controlData+"&form_data="+thisFormElements,true); xmlhttp.send(files); 但是,使用POST方法,我无法在PHP中获取$\u文件,我不确定如何使用xmlhttp.send()将文件+FormData发送到PH
xmlhttp.open("GET", "data.php?controlData="+controlData+"&form_data="+thisFormElements,true);
xmlhttp.send(files);
但是,使用POST方法,我无法在PHP中获取$\u文件,我不确定如何使用xmlhttp.send()将文件+FormData发送到PHP,因此我获取了$\u get&$\u文件
如果可能的话,我希望只使用Javascript而不是Jquery来实现这一点
xmlhttp.open("POST", "data.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-Type", "multipart/form-data");
xmlhttp.send("controlData="+controlData+"&form_data="+thisFormElements+files);
PFB完整的Ajax代码
function ajax(controlData,thisFormSubmitElement){
var controlData = JSON.parse(controlData);
controlData = JSON.stringify(controlData);
var todiv = controlData['todiv'];
var form_vals = [];
var form_nams = [];
var formkeyvalobj = {};
var thisFormElements = thisFormSubmitElement.form.elements;
var files = new FormData();
// Creating Key value pair for form elements BEGINS
for(var x = 0; x < thisFormElements.length; x++){
if(thisFormElements[x].type === "file"){
var fileToUpload = document.getElementById(thisFormElements[x].id);
files.append(thisFormElements[x].name, fileToUpload.files[0]);
form_vals[form_vals_len] = "";
form_nams[form_vals_len] = thisFormElements[x].name;
formkeyvalobj[form_nams[form_vals_len]] = form_vals[form_vals_len];
}else{
form_vals[form_vals_len] = thisFormElements[x].value;
form_nams[form_vals_len] = thisFormElements[x].name;
formkeyvalobj[form_nams[form_vals_len]] = form_vals[form_vals_len];
}
}
thisFormElements = encodeURIComponent(JSON.stringify(formkeyvalobj));
// Creating Key value pair for form elements ENDS
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200 || this.readyState == 4 && this.status == 401) {
document.getElementById(todiv).innerHTML = this.responseText;
}
};
// GET METHOD WORKS - In Php I Get $_GET & $_FILES
xmlhttp.open("GET", "data.php?controlData="+controlData+"&form_data="+thisFormElements,true);
xmlhttp.send(files);
// POST METHOD DOES NOT WORK - In Php I Get $_POST BUT I DO NOT GET --- $_FILES
xmlhttp.open("POST", "data.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-Type", "multipart/form-data");
xmlhttp.send("controlData="+controlData+"&form_data="+thisFormElements+files);
}
函数ajax(controlData,thisformsubmitement){
var controlData=JSON.parse(controlData);
controlData=JSON.stringify(controlData);
var todiv=控制数据['todiv'];
var form_vals=[];
var form_nams=[];
var formkeyvalobj={};
var thisFormElements=thisformsubmitement.form.elements;
var files=new FormData();
//开始为表单元素创建键值对
对于(var x=0;x
使用xmlhttp.send(JSON.stringify({“key”:“value”,“key2”:“value”,…});
使用xmlhttp.send(JSON.stringify({“key”:“value”,“key2”:“value”,…});