0

Bootstrap でフォームを使用してファイルをアップロードしようとしています。私が Bootstrap について言及する理由は、通常はフォームのアップロード ファイルが問題ないためですが、今回は Bootstrap を使用しています。それが理由かもしれませんし、そうでないかもしれません。

私が持っているHTMLは次のとおりです。

<!-- Edit Window -->
<form action="" method="post" enctype="multipart/form-data" id="NewsEditorForm">
<div class="panel panel-info" style="position: absolute; top:200px; left:20%; width: 600px; height: 600px; box-shadow: 0px 1px 4px Gainsboro; z-index: 11;" id="NewsEditor" hidden>
    <div class="panel-heading">
        <h3 class="panel-title"><a id="closeNewsEditor"><span class="glyphicon glyphicon-remove"></span></a> Edit News</h3>
    </div>
    <div class="panel-body">
        <div class="input-group">
          <span class="input-group-addon">Title</span>
          <input type="text" class="form-control" name="Title" placeholder="">
        </div>
        <div class="input-group">
          <span class="input-group-addon">Short Description</span>
          <input type="text" class="form-control" name="Short_Description" placeholder="">
        </div>
        <div class="input-group">
          <span class="input-group-addon">Story</span>
          <input type="text" class="form-control" name="Story" placeholder="">
        </div>
        <div class="input-group">
          <span class="input-group-addon">Picture</span>
          <input type="file" class="form-control" name="Picture">
        </div>
        <div style="width: 100%; text-align: center; padding: 10px;">
            <button class="btn btn-large btn-primary newcenter" type="submit">Submit</button>
        </div>
    </div>
</div>
</form>

フォームを処理するためのスクリプトは次のとおりです。

    $("#NewsEditorForm").submit(function () {
        $.post(prefix_file + 'admin/process/editNewsStory.php',$(this).serialize(),function(data) {
            alert(data);
            if(data == true){
            } else {
            }

        });

            $("#NewsEditor").fadeOut(700);
            $(".callbackBackground").fadeOut(500);
            $(".newsEditRow").css('background',orig_bg);
            setTimeout(function () {window.location.href = 'updatenews.php';},700);
            return false;
        });

それはすべてに対して正常に動作alert(data)し、js ハンドラーに追加したものは、ファイルがアップロードされていないと考えていることを通知します (print_r($_FILES)これは、空の配列を返します)。また、通常はブラウザの下部に表示される送信ボタンや「ファイルのアップロードの進行状況」を押した後の遅延もありません。

4

1 に答える 1

1

serialize メソッドは、ファイル フィールドでは機能しません。AJAX 経由でファイルを送信する場合は、別のアプローチを取る必要があります。

ドキュメントから:

ファイル選択要素からのデータはシリアル化されません。

http://api.jquery.com/serialize/

于 2013-10-21T22:08:37.523 に答える