0

ファイルアップロードスクリプトに問題があります。HTMLは次のとおりです。

<form method="post" name="imgsubmit" id="contact_form" action="PHP/imgupload.php"     enctype="multipart/form-data">
<label id="namelabel" for="username">Your name:</label><input id="username" type="text" name="username" rel="req">
<label id="labelemail" for="imgemail">E-mail:</label><input id="imgemail" type="email" name="imgemail" rel="req">
<label id="filelabel" for="file">Your photo:</label><input id="file" type="file" name="file">
<input id="imgsubmit" type="submit" name="submit" value="SUBMIT"></form>

ユーザー名と電子メールのフィールドが有効かどうかを確認し、入力されていない場合はそれらの周りに白い境界線を返すjquery検証スクリプトがあります。

$(function () {
    $('#contact_form').submit(function (e) {
        e.preventDefault();
        var form = $('#contact_form');
        var post_url = form.attr('action');
        var post_data = form.serialize();
        var submit_form = false;
        var req_fields = $('input[rel=req]');
        var field, pcount = 0;
        req_fields.each(function () {
            field = $(this).val();
            if (field == '' || field == 'Required') {
                $(this).css('border', '1px solid white').val('');
                pcount += 1;
            } else {}
        });
        if (pcount == 0) {
            submit_form = true;
        }
        if (submit_form) {
            $.ajax({
                type: 'POST',
                url: post_url,
                data: post_data,
                success: function (msg) {
                    $(form).fadeOut;
                    form.html(msg).fadeIn();
                }
            });
        }
    });
});

問題は、ユーザー名がphpスクリプトに送信され、電子メールがphpスクリプトに送信されても​​、画像がアップロードされないことです。AJAXが画像のアップロードをサポートするようになり、form.serialize()が問題の根本的な原因である可能性が高いことを認識していますが、画像の送信をサポートするためにこのコードを正しく編集できていません。

PHPに送信する画像を含めるようにこのコードを調整するにはどうすればよいですか?

4

2 に答える 2

0
 `if (window.FormData)` 

これを確認してください。ファイルは`である必要があります

file = $('#elemet').files.

ajaxオプションはデータである必要があります:FormData、ここでformdata = new FormData();

于 2012-10-19T02:49:28.860 に答える
0

私はこの種のものにjQuery Form Pluginを使用するのが好きです。DOM が機能する準備ができたら、フォームの送信をバインドするだけです。次の例では、成功のコールバックを提供していますが、 errorbeforeSubmitなど、使用できる他のイベントがあります。

$('#contact_form').ajaxForm(function() { 
    alert("Thank you for your data!"); 
});

通常の入力値とファイルのアップロードの両方をサポートし (古いブラウザーではiframeを使用して ajax ファイルのアップロードを偽装します)、ブラウザーがそれを処理できる場合は、プログレス バーを表示することもできます。

于 2012-10-19T02:33:17.420 に答える