kat*_*son 4 validation ajax jquery
我一直试图从ajax到php获取文件,但没有成功。所以我正在使用JQuery Validate
我有一个带有多个输入(名称,电子邮件等)的表单,一个输入是文件类型。我执行了所有验证,甚至对文件也进行了验证,所有验证都运行顺利。然后,我来到SubmitHandler函数。据我了解,过去通过ajax发送文件有时会出现问题,但现在可以实现。所以我在努力
submitHandler: function (form) {
var $form = form,
formData = new FormData(),
params = $form.serializeArray(),
files = $form.find('[name="fileOne"]')[0].files;
$.each(files, function(i, file) {
formData.append('uploadedFiles-' + i, file);
});
$.each(params, function(i, val) {
formData.append(val.name, val.value);
});
$.ajax({
type: "POST",
url: "php/process.php",
dataType: "json",
data: formData
}).done(function (response) {
if (!response.success) {
alert("Failed");
console.log(response.errors);
}
else {
alert("Worked");
}
});
return false;
}
Run Code Online (Sandbox Code Playgroud)
所以我希望可以得到我的文件(fileOne)并将其附加到表单数据中。但是,在PHP中,我现在只是这样做
try {
if(isset($_FILES['fileOne'])){
var_dump("IN");
}
else {
var_dump("NO FILE");
}
} catch (RuntimeException $e) {
echo $e->getMessage();
}
Run Code Online (Sandbox Code Playgroud)
很多时候它甚至都没有打过这个PHP,因为该表单使用获取所有数据的url提交(通常在JQuery出错时发生)。当它正常工作时,我得到的输出是No File。
那么,如何将上传的文件与其余的表单数据一起发送,以便可以在PHP中进行处理?
谢谢
你没有设定 contentType: false, processData: false
$.ajax({
type: "POST",
url: "php/process.php",
dataType: "json",
data: formData,
mimeType: "multipart/form-data",
contentType: false,
processData: false
}).done(function (response) {
if (!response.success) {
alert("Failed");
console.log(response.errors);
}
else {
alert("Worked");
}
});
Run Code Online (Sandbox Code Playgroud)