我使用Bootstrap并在Modalbox中有一个Form。
还有一个Fileupload,我想上传图片,但如果我点击提交按钮,该网站看起来像重新加载即时,没有文件上传......
这是我的Ajax脚本
<script type="text/javascript">
$("#submitad").click(function () {
$.ajax({
url: "application/views/addad.php",
type: "POST",
data: $("#addad").serialize(),
success: function (data)
{
alert(data);
}
});
});
</script>
这是上传的html表单字段
这里是PHP的东西
<?php
$target_dir = "uploads/";
$filename = basename($_FILES["InputFile"]["name"]);
$target_file = $target_dir . $filename;
$imageFileType = pathinfo($target_file, PATHINFO_EXTENSION);
$check = getimagesize($_FILES["InputFile"]["tmp_name"]);
if ($check !== false) {
echo "File is an image - " . $check["mime"] . ".";
} else {
echo "File is not an image.";
}
?>
但它不起作用......
如果我从php文件中踢出它,它会保存我的其他字段,类型为&#34; text&#34;和数字
但文件上传无效,我已经尝试了很多我在谷歌上找到的
答案 0 :(得分:1)
尝试下面的代码并在ajax代码中进行一些更改。在代码中添加以下参数。
processData:false, contentType:false,
在ajax启动之前添加 var formData = new FormData($(“#formID”)[0]); 行。
或检查以下代码并根据您的代码进行更改。
<script type="text/javascript">
$("#submitad").click(function () {
var formData = new FormData($("#addad")[0]);
$.ajax({
url: "application/views/addad.php",
type: "POST",
data: formData,
processData: false,
contentType: false,
success: function (data)
{
alert(data);
}
});
});
</script>
答案 1 :(得分:0)
要使用ajax上传文件,您必须使用FormData()
代替serialize
。所以试试吧:
var file_data = $('#InputFile').prop('files')[0];
var form_data = new FormData();
form_data.append('file', file_data); // you can append as many values here as you want
$.ajax({
url : 'addad.php',
dataType : 'text',
cache : false,
contentType : false,
processData : false,
data : form_data,
type : 'post',
success : function(output){
alert(output);
}
});