我正在尝试使用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代码正常工作。
答案 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