5

私はフォームデータを送信するこのjqueryコードを持っています:

<script type="text/javascript">
$(document).ready(function(){
$("#message").hide();
$("#please_wait_box").hide();
$("#viewreseller").submit(function(e){
    e.preventDefault();
    dataString=$("#viewreseller").serialize();
    $.ajax({
        type: "POST",
        url: "view_reseller-go.php",
        cache: false,
        data: dataString,
        success: function(res){
            //$("#message").show();
            $("#please_wait_box").hide();
            $("#message").html(res);
            $('#message').fadeIn('slow');
            if(res.indexOf("success")!=-1)
            {
                window.location.href = res.substr(8);
            }
        }
    });
});
});
</script>

フォームのenctypeを設定する必要がありますmultipart/form-data- これは上記のコードで可能ですか?

4

1 に答える 1

4

Ajax を使用してフォーム データを送信しているため、 を設定しenctypeても効果はありません。それを使用するフォーム送信プロセスを完全にバイパスしています。

では、そのコードを調整して、enctype. この属性には、フォームの送信に対して 3 つの効果があります。

  1. HTTP POST リクエストのコンテンツ タイプを設定します。これは簡単に行うことができます。headers: { "Content-Type": "multipart/form-data" }
  2. multipart/form-dataの代わりに使用する形式でデータをエンコードしますapplication/x-www-form-urlencoded"-serialize決してこれを行いません
  3. ファイル入力からのファイルが含まれます-serializeこれは決して行いません

jQuery には、Ajax 経由でファイルのアップロードを処理するための機能が組み込まれていません。MDN には、組み込みのブラウザー API を使用するためのプロセスのかなり詳細な説明があります(これらの API の一部をサポートするには最新のブラウザーが必要であることに注意してください)。

あなたは jQuery を使用しているので、Ajax ファイルのアップロードをサポートする事前に作成されたライブラリーの使用を検討する必要があります。利用可能なものはたくさんありますが、特定のものをお勧めすることはできません.

于 2013-09-18T10:06:44.993 に答える