从后台返回json数据对象到前台,IE 支持,但是火狐却变成了文件下载(浏览器对application/json的支持问题)
【文件】 :importTemplateJson.action ;内容正确 :{"data":[{"merchantId":235,"merchantName":"xuboads"},{"merchantId":33,"merchantName":"225"}]}
处理 : 设置response.setHeader("Content-Type", "text/html"),改变默认application/json, 使返回的结果(非页面接收处理后的数据,而是服务器直接返回的数据)是字符串,而不是json, 同时页面接收类型设置为html 格式:dataType: 'text/plain' ; 这是你会意外的发现,json返回的时候,是标准的json 数据
{"data":[{"merchantId":235,"merchantName":"xuboads"},{"merchantId":33,"merchantName":"225"}]}
而 html 返回结果却是
<div align="">
<div></div>
{"data":[{"merchantId":235,"merchantName":"xuboads"},{"merchantId":33,"merchantName":"225"}]}
<div></div>
</div>
没办法 只能转换了,代码如下 :
data = data.substring(data.indexOf('{'),data.lastIndexOf('}')+1);
var message =eval('('+data+')');
var arry = message.data
处理OK !
PS : 如果修改ajaxfileupload.js 就从根本上解决了。 后续再跟
本文详细介绍了如何解决IE浏览器正确显示json数据,而火狐浏览器将其误认为文件下载的问题,通过调整response.setHeader设置,将json数据以文本形式返回,并在页面接收端设置正确的数据类型来解决此问题。
722

被折叠的 条评论
为什么被折叠?



