前台页面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后,后台就不能得到图片的正常路径和内容了啊。没有高手帮忙解决下啊。十分感谢。

解决方案 »

  1.   

    晕死了,ajax不支持文件上传,还是弄个插件吧
      

  2.   

    你平时看到的貌似ajax做的那是用iframe做的,要不你自己利用iframe原理做一个得了
      

  3.   

    ajax不支持上传文件一般无刷新上传是通过 iframe做的~现成的插件多了去了jquery的uploadify ,还有好多flash的  很好 ~~
      

  4.   


    我不是想用Ajax来上传图片,我只是想把前台的数据通过Ajax发送到后台,然后通过后台的操作把数据返回给前台。
      

  5.   


    我的这个图片上传是我的一个表单的一部分啊,整个表单都可以用Ajax来处理吗?
      

  6.   

    后台json_encode(数组);
    html中接收var arr = eval("("+你返回的数组+")");
      

  7.   

    在楼主的代码中式
    var arr = eval("("+data+")");//arr是数组,也就是用eval反解php中echo json_encode()返回的数组
      

  8.   

    $query   =   "INSERT   INTO   laptop   VALUES   ( null, '$name ', '$price ', '$time ', '$newimg ', '$weight ', '$description ') "; 
    //这里最好将字段名一一写出来。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!!!!!!!!!!! ");
    };
    }, 
      

  9.   


    是啊,你理解的我的程序执行过程完全正确。那我用Ajax提交,有办法解决这个问题吗?或者有其他方式来解决吗?期待你的回答。