我有一个带有文件上传的表单,在一个列出上传文件的网格下方。我正在使用 ajaxForm ( jquery.form.js ) 来执行 ajax 文件上传。为了响应成功的文件上传,我希望从服务器返回一个安全代码(我在服务器上创建它),稍后在从 Grid 中的链接下载该文件时作为参数传递。
如果文件上传不成功(即文件无效或文件过大),我必须通知用户。我也使用taconite 插件。成功上传将显示消息,然后调用函数在网格中设置安全代码。如果不成功向用户显示消息并调用函数以从网格中删除上传条目(因为它不成功)
我有类似的机制从网格中删除字段 - 发送删除帖子请求 ($.post(...)) 并从服务器返回 taconite 结果。这按预期工作得很好。但是 .ajaxForm(带文件上传)在 IE 中无法正常工作。
这是 ajaxForm 调用的片段 -
成功:函数(responseXML,statusText,xhr,frm){ ... }
使用 FF(Firefox),我不必担心任何事情 - 铁燧石响应(来自 responseXML)被正确解析。但是对于 IE responseXML 是 xml 对象。某些版本的 IE 提供来自 xhr.responseXML.xml 或 xhr.responseXML.text 或 xhr.responseXML.documentElement.textContent 的 xml 文本 - 但它并不一致。无论如何要获取xml文本?
除此之外,即使我在临时 div 中手动设置 xml 内容,它仍然不会调用/执行 taconite 插件操作!
我知道这听起来很复杂,但我得到的唯一线索是 ajaxForm + taconite + 文件上传存在问题。如果它不是文件上传,那么 taconite 将按预期对 IE 和 FF 执行(如我的删除文件功能)。如果您有任何我可以调整和尝试的建议,请分享!
这是返回的样品铁燧岩 -
<taconite>
<replaceContent select="#fileOprMsg">
<span id="oprResult">Operation was successful<span class="error"></span></span>
<script>$().ready(function () { showOprResult('#oprResult', 1); });</script></replaceContent>
<eval><![CDATA[ fileUploadResponse('dcrc%22uycok0lri%3d9%3a3g%3a6%3a%3b%2f7ehd%2f6chf%2f%3a6de%2fghgcg4c7dgh4%3dVtwg',true,-1); ]]> </eval>
</taconite>