0

「AJAXを使用してファイルをアップロードできない」問題の回避策を実装しています(要するに、フォームはiframeをターゲットにしており、jQueryでiframeのコンテンツを取得して処理したい)。

現時点では、フォームが送信されるたびに呼び出される送信ハンドラーがあります。フォームにファイル アップロード フィールドがあるかどうかを判断し、ある場合はバインドを解除して submit() を呼び出します。残念ながら、submit() は、カスタム ハンドラーが false を返すまで実際にはトリガーされません。したがって:

$('form').livequery('submit.custom', function() {

    if ($(this).has('input[type=file]').length != 0) {

        $(this).unbind('submit.custom');

        $('body').append('<div id="file_iframe"></div>');
        $('#file_iframe').append('<iframe name="postframe" id="postframe" class="hidden" src="" />');

        $(this).attr("target", "postframe");

        $(this).submit(); // <-- Doesn't trigger until after 'return false;'

    }

    return false;

});

これは、iframe 内のデータを処理できないことを意味します。代わりに、現在のカスタム ハンドラー内に新しいカスタム ハンドラーをバインドすることを考えていました (まだ混乱していますか?)。これは (おそらく) 現在のハンドラーが false を返した後にトリガーされたものになりますが、デフォルトをトリガーするにはその新しいハンドラーが必要です。アクションを送信してから処理を続行してください。これを行う方法、または考えられる問題を回避する方法はありますか?

$('form').submit(function() {

    // Do something to trigger default action, ie actually post the form

    // Then do some other bits and pieces

});

どんな助けにも感謝します!

4

1 に答える 1

0

自分を苦しめる代わりにこれを使うことをお勧めします(それを経験しました)

http://www.uploadify.com/demos/

複数のファイルのアップロードと進行状況のフィードバックも可能になるためです。

于 2011-01-28T11:39:20.143 に答える