- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 jQuery
文件 upload plugin .
我不使用 UI
部分,仅使用基本部分。
当我执行以下操作时,我在 IE
中遇到问题:
$('input#fileupload').fileupload({
url: '/upload',
done: function (e, data) {
if(data.result != null && $.trim(data.result) != '')
$('a#attachment').html(data.result);
}
//......................
在IE
上,data.result
是一个Object
(至少在IE9
上,不确定其他的。 ..)
在 Chrome
/Firefox
上只是响应 Text
(来自服务器的简单纯文本)。
想法?
最佳答案
我刚刚遇到了同样的问题,我认为这是由于 IE(甚至 9)不支持 XHR 文件上传。这是我认为正在发生的事情以及我的解决方案:
由于 Safari 5+、Firefox 4+ 和 Chrome 支持 XHR 文件上传,因此 fileupload 插件可以真正异步传输文件,从而允许来自服务器的纯文本响应。此纯文本回复可通过 data.result
获得在 done
事件处理程序,并且可以轻松使用。
然而,在 IE 中,文件传输是通过隐藏 iframe 中的整页刷新进行的,导致 data.result
在 done
处理程序是一个完整的document
对象,响应文本包裹在 <html><body><iframe><pre>
深处标签。
这不仅使在 IE 中获取数据变得很痛苦,而且使您在浏览器之间获取数据的方式有所不同。
我的解决方案:
我设置了forceIframeTransport
选项为 true,这使得所有浏览器都使用隐藏的 iframe 传输文件,例如 IE。遗憾的是错过了 XHR 文件上传,但这至少在所有浏览器中为我们提供了相同类型的响应。然后,在我的done
处理程序,我从 document
中提取了结果像这样的对象:
var result = $( 'pre', data.result ).text();
在你的例子中,我认为代码看起来像这样:
$('input#fileupload').fileupload({
forceIframeTransport: true,
url: '/upload',
done: function ( e, data ) {
var result = $( 'pre', data.result ).text();
if( result != null && $.trim( result ) != '' )
$( 'a#attachment' ).html( result );
}
...
这里还需要注意的是,我的服务器响应的内容类型是“text/plain”。您可能已经注意到,IE 有时会提示用户保存或打开 json 响应。
以下是一些在解决问题时非常有用的链接: https://github.com/blueimp/jQuery-File-Upload/wiki/Browser-support (请参阅底部的“XMLHttpRequest”部分) https://github.com/blueimp/jQuery-File-Upload/wiki/Options (参见“forceIframeTransport”大约向下 1/3)
希望这有帮助!
关于jquery文件上传-IE完成回调data.result问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8814068/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!