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

残念ながら、従来の HTML を使用して AJAX 経由でファイルを含むフォームを送信することはできません。を呼び出すe.preventDefault()と、通常のファイルのアップロードは実行されず、$.post手動で呼び出すと、必要なことを実行できません。

新しい HTML 5 機能を備えた新しいブラウザーで JavaScript を使用してアップロードできます。「 AJAX を使用してファイルをアップロードするにはどうすればよいですか」を参照してください。

于 2013-10-07T05:36:33.497 に答える
0

デフォルトのイベント機能を無効にする要素については言及していません。

現在、 # submitbtnと "#contact-entry" の2 つの要素があります。

#submitbtnを防止したい場合は、

$("#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");


                    });

    }); 

});

#contact-entryを防止したい場合は、

$("#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 に答える