1

我在使用 jquery ajax 发布表单时遇到了一些有线问题。我有一个多图像上传字段。当我使用 e.preventDefault() 函数时,图像没有上传。但是当我禁用此代码时。它仍然很好。这是我的标记、js和php代码片段

HTML

<form class="shoform" id="contact-entry" name="contact-entry" action="project-up-eng.php" method="post" enctype="multipart/form-data">
<input class="pic" id="img" type="file" multiple="multiple" name="imgfile[]" />
<input class="submitbtn" id="submitbtn" type="submit" value="Add"></input>
</form>

JS

$("#submitbtn").click(function(){


        $("#contact-entry").submit(function() {
        /* Act on the event */

        e.preventDefault();
        $.post('project-up-eng.php',$(this).serialize(), function()
                        {
                        alert("OK");


                    });

    }); 

});

PHP:

mkdir("projects/".$_POST['name']);
$path="projects/".$_POST['name'];
for($i=0;$i<count($_FILES['imgfile']['size']);$i++)
{
$file = $path."/".$_FILES['imgfile']['name'][$i];
move_uploaded_file($_FILES['imgfile']['tmp_name'][$i],$file);   

}
4

2 回答 2

4

不幸的是,您不能通过 AJAX 使用经典 HTML 提交带有文件的表单。当您调用e.preventDefault()时,不会执行常规文件上传,您$.post手动调用只是无法执行您想要的操作。

您可以在具有新 HTML 5 功能的新浏览器中使用 JavaScript 上传。请参阅“如何使用 AJAX 上传文件”。

于 2013-10-07T05:36:33.497 回答
0

You do not mention on which element you want to disable default event functionality.

Currently, there is two element #submitbtn and "#contact-entry"

If you want to prevent #submitbtn then

$("#submitbtn").click(function(e){  // just check e in the bracket

        e.preventDefault();
        $("#contact-entry").submit(function() {
        /* Act on the event */

//        e.preventDefault(); this line removed
        $.post('project-up-eng.php',$(this).serialize(), function()
                        {
                        alert("OK");


                    });

    }); 

});

If you want to prevent #contact-entry then

$("#submitbtn").click(function(){

        $("#contact-entry").submit(function(e) { // just check e in the bracket
        /* Act on the event */

       e.preventDefault(); 
        $.post('project-up-eng.php',$(this).serialize(), function()
                        {
                        alert("OK");


                    });

    }); 

});
于 2013-10-07T05:45:59.587 回答