次のようなフォームがあります。
<form id="uploadForm" name="uploadForm" method="post" enctype="multipart/form-data">
<input type="file" id="uploadFile" name="uploadFile" /><br />
<input type="submit" id="process" name="process" value="Process File" />
</form>
ユーザーがファイルをアップロードして処理できるようにしたい。ユーザーが「プロセス」を押したときに、jquery 投稿を使用してこのページを呼び出したい (このフォームは cfwindow に表示されており、cfwindow を離れたくありません)、何らかの処理を行い、メッセージを出力します。これは私が通常使用するコードです:
$('#process').click(function(){
$.post('<cfoutput>#cgi.script_name#</cfoutput>', $('#uploadForm').serialize(), function(data){
... some processing ...
});
});
ただし、何も渡されていません。さらに調査した結果、 serialize関数の jquery ドキュメントにたどり着きました。
ファイル選択要素からのデータはシリアル化されません。
ファイル選択要素を渡すにはどうすればよいですか?
(これが違いを生む場合-ページに投稿するときに、このコードを使用して、ファイル選択要素でアップロードされたファイルを読み取ります:
<cfspreadsheet action="read" src="#form.uploadFile#" sheet="1" query="spreadsheetData" headerRow="1" excludeHeaderRow="true">
もともと私は通常の形式のポストを使用していましたが、完全に機能していました. リロードする代わりに cfwindow を開いたままにできるように、ajax に切り替えたいと思います。)