jQuery ajax数据与文件发送无法正常工作

时间:2015-11-03 07:05:23

标签: jquery ajax

我正在尝试使用jQuery ajax发送带有文件的数据。但它不起作用:

<script>
    function uploadImage() {

        var form = document.getElementById("table").value + "-form";
        alert(form);

        var formData = new FormData($("#" + form));
        $.ajax({
            url: 'update.php',
            type: 'POST',
            data: formData,
            enctype: 'multipart/form-data',
            cache: false, 
            contentType: false, 
            processData: false, 
            dataType: "json" 
        });
    }
</script>

我已经编辑了添加了enctype和dataType的代码,但仍然没有将任何文件提供给指定的文件夹,该文件夹是根据输入动态创建的。

这是我的php代码:

$mode=$_POST['mode'];
$table=$_POST['table'];
$fetch=$_POST['fetch'];
$id=$_POST[$fetch];
$name=$_POST['name'];
$gender=$_POST['gender'];
$pimg=$_FILES['pimg']['name'];
$size=$_FILES['pimg']['size'];
$temp=$_FILES['pimg']['tmp_name'];
$city=$_POST['city'];

$file=strtotime("now").$pimg;

$locn="files/".$id."/".$table;
if (!file_exists($locn)) {    mkdir($locn, 0777, true); }
$path=$locn."/";
$upload=move_uploaded_file($temp,$path.$file);

$con=mysql_connect("localhost","root","");
$db=mysql_select_db("test",$con);
$sql="INSERT INTO `".$table."` (name,gender,pimg,city) VALUES ('$name','$gender','$file','$city');";
$query=mysql_query($sql,$con);

通过提交按钮提交数据时,Php代码正常工作。

2 个答案:

答案 0 :(得分:0)

这是猜测,因为您没有提供所有必要的信息:

FormData的构造函数采用HTML Form元素,而不是jQuery对象,因为它的参数:

var formData = new FormData($("#" + form)[0]);

答案 1 :(得分:0)

<script>
    function uploadImage() {

        var form = document.getElementById("table").value + "-form";
        alert(form);

        var formData = new FormData($("#" + form));
        $.ajax({
            url: 'update.php',
            type: 'POST',
            data: formData,
            enctype: 'multipart/form-data', // add
            cache: false,
            contentType: false,
            processData: false
        });
    }
</script>

如果要从ajax

发送文件,请添加enctype