0

AJAX を使用してセットアップ ウィザードを作成しています。これは、合計 6 つのステップを含む複数ステップのフォーム送信です。手順 1 ~ 5 は正常に機能します。これらは単なるフォーム フィールドであり、テキストを送信するだけです。最後のステップであるステップ 6 では、ユーザーは 7 つの画像をアップロードできます。この手順は機能しません。I get a 500 Internal Server Error

JSON 経由で画像データを正しく渡していますか? 私が間違っていることや忘れていることは他にありますか?

関連するコードは次のとおりです。

HTML (手順 6 のみ)

<form action="/ajax/wizard.php/<?php echo $userName ?>?step=3" 
class="defaultRequest" enctype="multipart/form-data" method="post">

<input type="hidden" name="token" value="<?php echo $token; ?>"/>

<fieldset>
    <p><label>Profile Picture</label>
    <input type="file" name="pPic" value="" /></p>

    <p><label><a href="#help-username" class="show_helper"><span>(?)</span>
    Pic 1</a></label> <input type="file" name="Album1" value="" />
    </p>

    <p><label><a href="#help-password" class="show_helper"><span>(?)</span>
    Pic 2</a></label><input type="file" name="Album2" value="" />
    </p>

    <p><label>Pic 3</label>
    <input type="file" name="Album3" value="" /></p>

    <p><label>Pic 4</label>
    <input type="file" name="Album4" value="" /></p>

    <p><label>Pic 5</label>
    <input type="file" name="Album5" value="" /></p>

    <p><label>Pic 6</label>
    <input type="file" name="Album6" value="" /></p>

</fieldset>

<fieldset>
     <p><label>&nbsp;</label>
     <button type="submit"><span>Upload Images</span></button></p>
</fieldset>

JS

$.ajax({
type: 'POST',
url: requestUrl,
data: $(this).serialize(),
dataType: 'json',
success: function(data) {

            if(data.response){
                $('div.errormsg').remove();
                $(eventHeadline).html(data.eventHeadline);
                console.log(data.eventHeadline);
                //$(eventDate).html(data.eventName);

                if(data.step){
                    openStep(data.step);
                }else{
                        openStep('next');
                }
            }else{
                $('div.errormsg').remove();
                $('<div class="errormsg">'+data.message+"</div>").insertBefore(form);
            }
4

1 に答える 1

1

ファイルフィールドはJSONにシリアル化されないため、アップロードするには、jQueryがを使用してデータオブジェクトを処理しない限り、jQueryを使用してアップロードできるFormDataprocessData: falseオブジェクトを作成する必要があります。ただし、これは最新のブラウザのいくつかでのみ機能します:http: //caniuse.com/#search=formdata

古いブラウザ/IEのjQueryでファイルのアップロードをサポートするには、標準のPOSTを使用してファイルをアップロードし、それをjQueryコールバックに結び付けるプラグインを見つけるのが最善の策です。これにより、いくつかのhttps:/が提供されます。 /www.google.co.uk/search?q=jquery+file+upload+plugin

于 2012-08-08T06:50:23.880 に答える