1

このスクリプトを機能させることができません。ファイルを送信するたびに、スクリプトは1つのajaxリクエストを実行してファイルをサーバーに送信する必要がありますが、シリアル化すると常に空の文字列が送信されます。

私のJavascript

$('#upload-button input:file').change(function() {
    $('#upload-text').text('Sending file...');

    $.ajax({
        type: "GET",
        url: "?url=images/send",
        data: $('#image-upload').serialize(),

        success: function(response) {
            if(response.error) {
                $('#upload-text').text(response.error);
            } else if(response.success) {
                $('#upload-text').text('Image send');
            }
        },
    });
})

私のHTML

<form name="image-upload" id="image-upload" action="?url=imagens/enviar" method="post" enctype="multipart/form-data">
    <input type="file" name="selected-image" id="upload-hidden" value="" />
</form>

ファイルを選択すると、次の結果が得られalert($('#image-upload').serialize());ます。

// EMPTY //

結果alert($('#image-upload input:file').attr('value'))

ponte-vecchio.jpg
4

3 に答える 3

2

ファイルを送信する場合は、iframeを使用する必要があります-ここで説明する「回避策」 、例:

あなたの問題については、なぜシリアル化が常に空であるのか、jqueryのソースを見てください。入力フィールドのタイプは、この正規表現に対してテストされます

 /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i

ご覧のとおり、「ファイル」タイプはその一部ではないため、jqueryはこの種の入力フィールドをシリアル化しません。

于 2012-04-21T18:54:59.273 に答える
1

このフィドルをチェックアウトします。iframe経由のアップロードを使用するようにjQuery経由で基本的なhtmlとJSを設定します。ファイルを「非同期に」アップロードするための優れた方法;)

于 2012-04-21T18:55:17.323 に答える
1

jQueryフォームプラグインを使用します。HTML5ファイルのアップロードをサポートしており、ブラウザが古すぎる場合は非表示のiframeにフォールバックできます。

于 2012-04-21T19:03:38.050 に答える