前台页面insert.html 中有个上传图片的按钮,
<li>
<p class="insert_li_img">电脑图片</p>
<input type="file" name="file" id="file" size="30" maxlength="12" />
</li>
单击提交按钮,调用,insert.js文件中的内容, $.ajax({
url: "php/insert.php",
type: "POST",
data: { "operation": "insert",
"name": $("#name").val(),
"price":$("#price").val(),
"time": $("#datepicker").val(),
"img": $("#file").val(),
"weight":$("#weight").val(),
"description": $("#description").val()
},
success: function(data) {
if (data == "success") {
alert("success");
redirectToHomePage();
}else{
alert("error!!!!!!!!!!!");
};
},
error: function() { alert("error");
}
});
后台,insert.php,根据提交的内容,想数据库中插入相应的内容,代码如下:
<?php header('Content-type: text/html; charset GB2312');
include("base/base.php"); $operation = $_POST['operation']; if($operation == insert) { $name = $_POST['name'];
$price = $_POST['price'];
$time = $_POST['time'];
$weight=$_POST['weight'];
$description = $_POST['description'];
inserDate($name,$price,$time,$weight,$description); echo "success"; } function inserDate($name,$price,$time,$weight,$description){
$listArray = explode(".",$_FILES["file"]["name"]);
$newName = time().".".array_pop($listArray);
PRINT_r ($_FILES["file"]); if (true)
{
if ($_FILES["file"]["error"] > 0){
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else {
if (file_exists("upload/" . $newName)){
echo $newName . " already exists. ";
}
else {
move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" . $newName);
}}
}
else
{
echo "Invalid file";
}; $newimg = "upload/" . $newName; $query = "INSERT INTO laptop VALUES ('','$name','$price','$time','$newimg','$weight','$description')"; mysql_query("SET NAMES GB2312");
mysql_query($query);
mysql_close(); }
?>由于后台的insert.php 要对上传文件进行处理。而我现在能够把其他内容插入数据库,而图片信息无法插入数据库。我以前的没有使用insert.js时,是可以处理图片的,现在经过js后,后台就不能得到图片的正常路径和内容了啊。没有高手帮忙解决下啊。十分感谢。
<li>
<p class="insert_li_img">电脑图片</p>
<input type="file" name="file" id="file" size="30" maxlength="12" />
</li>
单击提交按钮,调用,insert.js文件中的内容, $.ajax({
url: "php/insert.php",
type: "POST",
data: { "operation": "insert",
"name": $("#name").val(),
"price":$("#price").val(),
"time": $("#datepicker").val(),
"img": $("#file").val(),
"weight":$("#weight").val(),
"description": $("#description").val()
},
success: function(data) {
if (data == "success") {
alert("success");
redirectToHomePage();
}else{
alert("error!!!!!!!!!!!");
};
},
error: function() { alert("error");
}
});
后台,insert.php,根据提交的内容,想数据库中插入相应的内容,代码如下:
<?php header('Content-type: text/html; charset GB2312');
include("base/base.php"); $operation = $_POST['operation']; if($operation == insert) { $name = $_POST['name'];
$price = $_POST['price'];
$time = $_POST['time'];
$weight=$_POST['weight'];
$description = $_POST['description'];
inserDate($name,$price,$time,$weight,$description); echo "success"; } function inserDate($name,$price,$time,$weight,$description){
$listArray = explode(".",$_FILES["file"]["name"]);
$newName = time().".".array_pop($listArray);
PRINT_r ($_FILES["file"]); if (true)
{
if ($_FILES["file"]["error"] > 0){
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else {
if (file_exists("upload/" . $newName)){
echo $newName . " already exists. ";
}
else {
move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" . $newName);
}}
}
else
{
echo "Invalid file";
}; $newimg = "upload/" . $newName; $query = "INSERT INTO laptop VALUES ('','$name','$price','$time','$newimg','$weight','$description')"; mysql_query("SET NAMES GB2312");
mysql_query($query);
mysql_close(); }
?>由于后台的insert.php 要对上传文件进行处理。而我现在能够把其他内容插入数据库,而图片信息无法插入数据库。我以前的没有使用insert.js时,是可以处理图片的,现在经过js后,后台就不能得到图片的正常路径和内容了啊。没有高手帮忙解决下啊。十分感谢。
我不是想用Ajax来上传图片,我只是想把前台的数据通过Ajax发送到后台,然后通过后台的操作把数据返回给前台。
我的这个图片上传是我的一个表单的一部分啊,整个表单都可以用Ajax来处理吗?
html中接收var arr = eval("("+你返回的数组+")");
var arr = eval("("+data+")");//arr是数组,也就是用eval反解php中echo json_encode()返回的数组
//这里最好将字段名一一写出来。update tablename set ziduan='value',ziduan1='value1'的方式。还有:
你用ajax方式提交,$_FILES[ "file "]是没有任何内容的。
按你程序的逻辑,在move_uploaded_file($_FILES[ "file "][ "tmp_name "], "upload/ " . $newName); 就会出错,并停下来了。
后面的插入语句也就不会执行了。你在js的:
success: function(data) {
//这里加个alert(data);方便针测PHP的执行结果
if (data == "success ") {alert( "success ");
redirectToHomePage();}else{alert( "error!!!!!!!!!!! ");
};
},
是啊,你理解的我的程序执行过程完全正确。那我用Ajax提交,有办法解决这个问题吗?或者有其他方式来解决吗?期待你的回答。