我必须使用ajax提交表单。该表单包含text field
和file upload field
。但在ajax page(formaction.php)
file details are not getting.
HTML
<form method="post" id="newform" enctype="multipart/form-data">
Name:<input type="text" id="txt" name="txt"><br>
File:<input type="file" id="image" name="image"><br>
<input type="submit" id="btn" value='Proceed'>
</form>
的jQuery
$(document).ready(function(){
$("#btn").click(function(event){
event.preventDefault();
var formdata = $('form#newform').serialize();
$.post("formaction.php",{formdata:formdata},function(data){
alert(data);
});
});
});
formaction.php
print_r($_REQUEST['formdata']);
input type file
详细信息未进入ajax
页面。 formdata
仅包含文本字段的值。
答案 0 :(得分:0)
要获取文件详细信息,
而不是这个,
print_r($_REQUEST['formdata']);
添加此
print_r($_FILES['image']);
答案 1 :(得分:0)
你的jquery必须改变如下:
<script type="text/javascript">
function submitForm() {
console.log("submit event");
var fd = new FormData(document.getElementById("fileinfo"));
fd.append("label", "WEBUPLOAD");
$.ajax({
url: "formaction.php",
type: "POST",
data: fd,
enctype: 'multipart/form-data',
processData: false, // tell jQuery not to process the data
contentType: false // tell jQuery not to set contentType
}).done(function( data ) {
console.log("PHP Output:");
console.log( data );
});
return false;
}
</script>
答案 2 :(得分:0)
serialize()
不会在表单数据中包含文件输入。你必须手动完成。
$("#btn").click(function(event) {
event.preventDefault();
var form_data = new FormData(document.getElementById('newform'));
// Now you have your DataObject setup.
$.ajax({
url: 'formaction.php',
type: 'POST',
cache : false,
contentType: false, // Important.
processData: false, // Important.
data: form_data
})
.done(function(data) {
console.log(data);
})
.fail(function(data) {
console.log(data);
});
return false;
});
使用$.ajax()
,您可以轻松实现这一目标。
现在在formaction.php中:您可以像普通表单提交那样获取值。
$txt = $_POST['txt'];
$image = $_FILES['image'];
注意:请注意contentType: false
和processData: false
如果您不提供processData: false
,则ajax将在控制台"Illegal invocation."
中返回错误
如果您不提供contentType: false
,那么该文件将以content-disposition
和content-type: 'application/pdf'
或您上传的任何mime类型以编码和原始方式提交。