我有一个看起来像这样的表格:
<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 ...
});
});
然而,什么都没有通过。进一步的调查使我找到了序列化函数的 jquery 文档,其中指出:
来自文件选择元素的数据未序列化。
如何传递文件选择元素?
(如果这有所不同 - 当我发布到页面时,我正在使用此代码来读取文件选择元素中上传的文件:
<cfspreadsheet action="read" src="#form.uploadFile#" sheet="1" query="spreadsheetData" headerRow="1" excludeHeaderRow="true">
最初我只是使用常规形式的帖子,它工作得很好。我想切换到ajax,这样我就可以保持cfwindow打开而不是重新加载。)