想用ajax做一个图片上传的功能,以前都是直接提交form,加个 enctype="multipart/form-data"属性就地了,但是现在用到ajax,这块要怎么处理呀?
       $(".workImgUpload_btn").click(function(){
if($("#work_file").val()==""){
alert('请选择图片');
return;
}
var work_file = $("#work_file").val();
var workImg_src = $(".workImg_src").val();
alert(work_file);
$.post("<?php echo site_url('admin/work_c/workImgUpload') ?>",
{work_file:work_file,workImg_src:workImg_src},
function(data){
//alert(data);
alert("上传成功!");
});
return false;
});ajaxfilemultipart

解决方案 »

  1.   

    给你个例子,你测试一下吧
    index.html<html>
    <head>
      <title>图片异步上传</title>
    </head>
    <script type="text/javascript" src="script/jquery-1.7.2.min.js"></script>
    <script>
    $(function(){
     $("#upload_file").change(function(){
       $("#uploadFrom").submit();
     });
    });
    function stopSend(str){
     var im="<img src='"+str+"'>";
     $("#msg").append(im);

    </script>
    <body>
     <div class="frm">
      <form name="uploadFrom" id="uploadFrom" action="abc.php"  method="post"  target="tarframe" enctype="multipart/form-data">
       <input type="file" id="upload_file" name="upfile">
      </form>
      <iframe src=""  width="0" height="0" style="display:none;" name="tarframe"></iframe>
     </div>
     <div id="msg">只需选择图片既可上传<br />
     </div>
    </body>
    </html>abc.php<?php
     $file=$_FILES['upfile'];
     $name=rand(0,500000).dechex(rand(0,10000)).".jpg";
     move_uploaded_file($file['tmp_name'],$name);
    //调用iframe父窗口的js 函数
     echo "<script>parent.stopSend('$name')</script>";
    ?>
      

  2.   

    所谓的异步上传其实就是把file所在的form指向一个隐藏的iframe来达到无刷新上传的效果,用$.post()是不行的。
      

  3.   

    我现在知道可以用ajaxfileupload,我现在想知道这个的回调函数怎么用
    $.ajaxFileUpload
    (
    {
    url:'<?php echo site_url('admin/work_c/workImgUpload') ?>',
    type:'post',
    secureuri:false,
    fileElementId:'work_file',
    dataType: 'html',
    data:{work_file:work_file,workImg_src:workImg_src},
    success: function (data, status)
    {
    if (typeof (data.error) != 'undefined') {  
    if (data.error != '') {  
    alert(data.error);  
    } else {  
    alert(data.msg);  
    }  
    }     
    },
    error: function (data, status, e)
    {
      alert(e);
    }
    }
    )