「AJAXを使用してファイルをアップロードできません」という問題を回避する方法を実装しています(要するに、フォームはiframeをターゲットにしています。 iframeを削除して処理します)。さらに処理する前にjQueryイベントハンドラのデフォルトアクションをトリガーする
現時点では、フォームが送信されるたびに呼び出される送信ハンドラがあります。フォームにファイルアップロードフィールドがあるかどうかを判断し、存在する場合は、自身をバインド解除してsubmit()を呼び出します。残念ながら、submit()は、カスタムハンドラがreturn'd 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
});
ご協力いただきありがとうございます。
私は魅力を見ることができますが、私は可能な限りフラッシュを避けるために非常に努力しています...すべての提案をありがとう。 – narnianUK