【发布时间】:2014-03-11 02:44:35
【问题描述】:
我正在尝试使用 ajax 上传文件,这给了我一个错误,其余数据上传成功我尝试不使用 ajax 文件正在上传,但是当我尝试通过 ajax 上传文件时,它给了我错误我完全混淆为什么 ajax 给我这个问题。这是我的代码。
<html>
<head>
<script src="jquery-1.8.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#button").click(function(){
var form_data = $('#reg_form').serialize();
$.ajax({
type:"POST",
url:"process.php",
data:form_data,
success: function(data)
{
$("#info").html(data);
}
});
});
});
</script>
</head>
<body>
<form id="reg_form" enctype="multipart/form-data" method="post" action="">
name : <input type="text" name="name" id="name"/>
</br>
message : <input type="text" name="message" id="message" />
</br>
Image : <input type="file" name="file" id="file" />
<input type="button" value="Send Comment" id="button">
<div id="info" />
</form>
</body>
</html>
process.php文件编码在这里
<?php
mysql_connect("localhost","root","");
mysql_select_db("ajaxdatabase");
$name=$_POST["name"];
$message=$_POST["message"];
//storing file in filename variable
$fileName = $_FILES['file']['name'];
//destination dir
$to="image/".$fileName;
move_uploaded_file($_FILES['file']['tmp_name'],$to);
$query=mysql_query("INSERT INTO common(name,message,destination) values('$name','$message','$to') ");
if($query){
echo "Your comment has been sent";
}
else{
echo "Error in sending your comment";
}
?>
【问题讨论】:
-
你应该在这个问题中看到答案:stackoverflow.com/questions/166221/…,你可能会在那里找到解决方案
-
是的,这个问题很有帮助,但我必须寻找很多才能找到我的错误,非常感谢@Sylvain
-
但还是没找到问题所在。
-
在
var form_data = $('#reg_form').serialize();之后检查form_data的值,你应该会发现问题。 -
serialize仅在您发送文本数据时有用。由于您正在发送文件,因此您应该尝试使用FormData,如我在几个 cmets 前链接的问题的已接受答案中所述。