如何在使用 jquery Ajax 处理数据时不需要上传文件
how to make a file upload NOT required when handling data with jquery Ajax
我有如下表格:
<form name ="order" id="order" action="" method="POST" role="form" enctype="multipart/form-data">
<input class="checkbox pull-left" type="checkbox" name="check_list[]" value="p1"> Product 1
<input class="checkbox pull-left" type="checkbox" name="check_list[]" value="p2"> Product 2
<input class="form-control name" name="name" type="text" placeholder="name">
<input class="form-control address" name="address" type="text" placeholder="address">
<input class="form-control email" name="email" type="email" placeholder="email">
<input class="form-control phone" name="phone" type="text" placeholder="phone">
<input type="file" name="image" class="image">
<button type="submit" id="cf-submit" name="submit" class="btn btn-primary">SUBMIT</button>
</form>
要将数据发送到 php 文件,我使用 jquery ajax:
$('#order').on('submit', function(e){
e.preventDefault();
var file_name = $('.image').val();
var formData = new FormData(this);
formData.append('fileupload',$( '.image' )[0].files[0], file_name); // image
$.ajax({
url: 'order.php',
data: formData,
processData: false,
contentType: false,
type: 'POST',
success: function(data){
$('.alert-success').show();
$('.alert-success').html(data);
}
});
$('#order')[0].reset();
return false;
});
所有数据都由 php 文件正确处理。
问题:
我只能在选择上传文件时提交。
但是不需要上传文件。因此人们不得不选择在不上传文件的情况下从文本字段发送数据。
我发现它与 formData.append
行有关
当我注释掉这一行时,现在可以只提交文本字段的值了。
所以:我怎样才能使文件上传不再需要,这样就可以在不上传文件的情况下提交?
如果现在选择了文件,也没有要追加的内容。所以把它放在一个条件:
var formData = new FormData(this);
var file_name = $('.image').val();
if(file_name != '') { // if file input is not empty
formData.append('fileupload',$( '.image' )[0].files[0], file_name); // image
}
我有如下表格:
<form name ="order" id="order" action="" method="POST" role="form" enctype="multipart/form-data">
<input class="checkbox pull-left" type="checkbox" name="check_list[]" value="p1"> Product 1
<input class="checkbox pull-left" type="checkbox" name="check_list[]" value="p2"> Product 2
<input class="form-control name" name="name" type="text" placeholder="name">
<input class="form-control address" name="address" type="text" placeholder="address">
<input class="form-control email" name="email" type="email" placeholder="email">
<input class="form-control phone" name="phone" type="text" placeholder="phone">
<input type="file" name="image" class="image">
<button type="submit" id="cf-submit" name="submit" class="btn btn-primary">SUBMIT</button>
</form>
要将数据发送到 php 文件,我使用 jquery ajax:
$('#order').on('submit', function(e){
e.preventDefault();
var file_name = $('.image').val();
var formData = new FormData(this);
formData.append('fileupload',$( '.image' )[0].files[0], file_name); // image
$.ajax({
url: 'order.php',
data: formData,
processData: false,
contentType: false,
type: 'POST',
success: function(data){
$('.alert-success').show();
$('.alert-success').html(data);
}
});
$('#order')[0].reset();
return false;
});
所有数据都由 php 文件正确处理。
问题:
我只能在选择上传文件时提交。 但是不需要上传文件。因此人们不得不选择在不上传文件的情况下从文本字段发送数据。
我发现它与 formData.append
行有关
当我注释掉这一行时,现在可以只提交文本字段的值了。
所以:我怎样才能使文件上传不再需要,这样就可以在不上传文件的情况下提交?
如果现在选择了文件,也没有要追加的内容。所以把它放在一个条件:
var formData = new FormData(this);
var file_name = $('.image').val();
if(file_name != '') { // if file input is not empty
formData.append('fileupload',$( '.image' )[0].files[0], file_name); // image
}