2012-09-29 31 views
1

我搜索了周围的stackoverflow和谷歌,发现了很多关于这个问题的材料,但其中没有帮助我掌握我想要实现的内容。阿贾克斯邮政形式 - 难以集成XHR2文件上传

我想创建一个表单,它异步发送表单数据并上传单个图像,调整大小,重命名并将其保存到指定的目录,尽管同一个php脚本。

如果以传统方式发送数据,一切正常。

当我试图将XHR集成到处理非文件表单数据的现有jQuery中,并将该文件与其他所有内容一起发送到PHP脚本时,我即将脱钩。

我不是特别精通JS,我非常处于学习状态。到目前为止,我发现的所有内容都是以上载文件为例,着重于上传进度,多文件上传和drag'n'drop(我对此项目不感兴趣)。

我不是复制代码,并试图把事情弄糟它与我写的是什么工作的球迷,我宁愿知道如何做到这一点...

有没有人碰到任何阅读材料/教程演示和解释如何在标准的ajax表单文章中实现ajax文件上传?

在此先感谢。


代码的简化例子我的工作:

<script> 

$('#editgig_form').submit(function(){ 

    $('#ng_loading').fadeIn(500); 

    var eg_dataString = $('#editgig_form').serialize(); 

    $.ajax({ 
     type: "POST", 
     url: "Resorces/Components/GigDiary/edit_gig.php", 
     data: eg_dataString, 
     success: function(){ 

     $('#giglist_canvas').load('Resorces/Components/GigDiary/refresh.php'); 

     $('#ng_loading').fadeOut(500); 
     popupclose(edit_gig);     
     editmenu_selected = ''; 
     } 

    }); 

return false; 

}); 

</script> 

-

<form id="editgig_form" method="post" enctype="multipart/form-data"> 
    <input type="text" name="date" /> 
    <input type="text" name="venue" /> 
    <input type="file" name="image" /> 
</form> 

-

<?php 

date = date("Y-m-d", strtotime($_POST['date'])); 
venue = $_POST['venue']; 

// SCRIPT TO RESIZE IMAGE, SAVE TO DIRECTORY 

$update = "UPDATE gigdairy SET date="$date", venue="$venue", image="imgname"; 
mysql_query($update); 

?> 
+0

表现出一定的代码你有什么尝试? –

+0

我还没有试图实现这一点,因为我真的不知道从哪里开始。我会添加一些我必须说明我想要做的事情的剪辑。 – Nw167

+0

ok然后你需要使用这个类新的XMLHttpRequest()。上传你的ajax调用通过ajax与xhr2上传它取决于浏览器其他明智的你必须用传统的方式上传。希望它是有道理的... –

回答

0

你有没有尝试打印你是DATAS在您的浏览器中发送(console.log)或var_dump($_FILES)在你的PHP)?我知道你只是发布你的文件的名称。

您需要实现此功能(文件上传),或者你可以使用一个jQuery插件,像plupload,HTML5文件上传...这里

代码示例 http://www.html5rocks.com/en/tutorials/file/xhr2/