我有一个表格与文件上传和下面的网格,其中列出的文件上传。我使用ajaxForm (jquery.form.js)来执行ajax文件上传。为了响应成功的文件上传,我希望从服务器返回一个安全代码(我在服务器上创建它),该代码稍后作为参数传递,同时从Grid中的链接下载该文件。
如果文件上传失败(即无效文件或大小过大的文件),我必须通知用户相同的情况。我使用的膨润土插件也是一样的。成功的上传将显示消息,然后调用函数来设置网格中的安全代码。如果不成功,则向用户显示消息并调用函数从网格中删除上传条目(因为不成功)
我有类似的机制从网格中删除fiel --发送删除post请求($.post(.))并从服务器返回他克隆结果。这就像预期的一样好。但是.ajaxForm (文件上传)并不像IE预期的那样工作。
这是ajaxForm call的片段-
成功:函数(responseXML,statusText,xhr,frm) {.}
与FF(火狐),我不需要担心任何事情-他克隆特的反应(在responseXML中)被正确地解析。,但对于IE,responseXML是xml对象。有些版本的IE提供来自xhr.responseXML.xml、xhr.responseXML.text或xhr.responseXML.documentElement.textContent的xml文本,但它不一致。不管怎样,为了得到xml文本?
此外,即使我在临时div中手动设置xml内容,也仍然不调用/执行taconite操作!
我知道这听起来很复杂,但我唯一得到的线索是,它在ajaxForm + 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>发布于 2013-06-10 07:36:26
菲尤..。这是我遇到过的最臭名昭著的IE /s FF冲突之一,IE不会放弃!我尝试了从尝试解析xhr.responseXML元素到将其内容动态分配给一个隐藏元素,甚至尝试将其呈现为脚本,但都失败了。
最后,在令人沮丧的几天后,我把我的努力转移到了实际的taconite文件中,并审查了它的脚本,试图找到一些我可以利用的函数/方法,并且可以宾果!
我不知道这有多稳定/合法,但对我来说-
$('#frmFiles').ajaxForm({
dataType: 'xml',
...
success: function (responseXML, statusText, xhr, frm) {
...
/* FF gives xml string in - xhr.responseText */
...
if (xhr.responseXML != null){
var tc = new $.taconite(responseXML); // only for IE
}
...
});我在这里所做的是使用responseXML和hats显式地初始化一个隐式实例,这个插件处理xmlObject和/或xml文本,而不需要任何额外的规范。所有的魔法都是这样的-
var tc = new $.taconite(responseXML);记住-这只是IE,FF处理它的v.well,所以为了防止上面的代码在FF中被执行,我必须保持额外的IE特定的检查。
我在IE7 (8& 9 )中测试了它。希望这能让处于类似IE困境中的人们省去一些精力:)哦!如果有人能找到更好的解决方案,我会全神贯注的!
谢谢。
https://stackoverflow.com/questions/16853470
复制相似问题