3

これら 2 つの jQuery プラグインを使用しようとしています: pluploadjQuery フォーム プラグイン ajaxFormです。

それは 1 つのことを除いて正常に動作します: 以前に plupload でアップロードされたファイルの file.name (ajaxForm を使用) を送信できません。

少し説明します。ユーザーはpluploadでファイルを送信します。ファイルがアップロードされます。それは正常に動作します。

次に、ユーザーは ajaxForm でフォームを送信し、post メソッドでフォーム データ + ファイル名を送信します。

ajaxform でデータを送信する方法を知っています。このコードは正常に動作します。

var value1 = "dynamic_value1";
$('#my_form').ajaxForm({ 
        // datas is sent in post method, it works fine
        data: { value1: value1 }, 
        beforeSubmit: validate,
            success: function() { 
            // it's ok :
            //alert(value1);
        } 
    });

しかし、pluplopad file.name でこれを行うことはできません。アラートを作成した場合にファイル名を確認できますが、送信できません。

ファイル名を取得するための Plupload コード (動作します): var file_name_vous;

uploader.bind('FileUploaded', function(up, file, response) {

            // It's ok : i can get file name, alert show me the file name
            file_name_vous = encodeURIComponent(file.name);
            alert(file_name_vous);
        //};
    });
});

しかし、私はこれを行うことができません。このコードは機能しません:

$participer_form.ajaxForm({ 
        type: 'POST',
        data: { 
        // impossible to send this var
        file_name_vous: file_name_vous
        }, 
        beforeSubmit: validate,

            // success 
            success: function() { 
                // It's ok, alert shows the file name 
                alert(file_name_vous);    
        } 
    });

だから私が理解していないこと、ポストメソッドでデータを送信できること、私はそれをテストしました。しかし、私はこの特定の var を送信できません: file_name_vous = encodeURIComponent(file.name);

post メソッドで送信する前に (file.name) を処理する必要があるかどうか知っていますか?

エラーはありません。単にfirebugネットワーク/ XHRで、この変数について何も表示されません。この var を var value1 = "dynamic_value1" に置き換えると、機能します。だから私の問題は、このpartuliar var file.nameに関するものだと思います

4

1 に答える 1

2

おそらく、ajax フォームのデータ部分を省略し、アップロードが成功したときに非表示フィールドを作成して、フォームと共に送信する必要があります。

このようなもの :

uploader.bind('FileUploaded', function(up, file, response) {

            // It's ok : i can get file name, alert show me the file name
            file_name_vous = encodeURIComponent(file.name);
            // maybe you'll have to check if hidden filed already exists
            $participer_form.Append($('<input type="hidden" value="'+file_name_vous+'" id="file_name_vous" name="file_name_vous"/>'));
        //};

これが役立つことを願っています

ところで、値をできるだけ遅く設定するために、これを試しましたか?

uploader.bind('FileUploaded', function(up, file, response) {

            // It's ok : i can get file name, alert show me the file name
            file_name_vous = encodeURIComponent(file.name);
    $participer_form.ajaxForm({ 
            type: 'POST',
            data: { 
            // impossible to send this var
            file_name_vous: file_name_vous
            }, 
            beforeSubmit: validate,

                // success 
                success: function() { 
                    // It's ok, alert shows the file name 
                    alert(file_name_vous);    
            } 
        });
    });
于 2013-02-20T09:34:49.437 に答える