PHP Ajax文件上传无效

时间:2017-10-09 14:14:54

标签: php jquery ajax

我使用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;和数字

但文件上传无效,我已经尝试了很多我在谷歌上找到的

2 个答案:

答案 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);
        }
});

Working Example