源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

上传文件返回的json数据会被提示下载问题解决方案

  • 时间:2020-02-14 09:08 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:上传文件返回的json数据会被提示下载问题解决方案
最近项目中出现上传文件返回的json数据会被提示下载,只有在ie10+中才会出现这个问题。前端使用jQuery的插件ajaxForm提交表单,后台返回的数据格式为json。代码如下:  后端Python:
[url=http://evilcos.me/?p=425]http://evilcos.me/?p=425[/url],jsonp添加/**/头部会安全一些                 content = '/**/' + str(callback) + '(' + temp_content + ')'                 mimetype = 'application/javascript'                 headers = {'charset':'utf-8'}                 return current_app.response_class(content, mimetype=mimetype,headers=headers)             else:                 mimetype = 'application/json'                 headers = {'charset':'utf-8'}                 content = temp_content                 return current_app.response_class(content, mimetype=mimetype,headers=headers)         elif isinstance(temp_content, basestring):             temp_content = cgi.escape(temp_content)             return temp_content         else:             return temp_content     return decorated_function @mod.route('/patch/install.json', methods=['POST']) @jsonp def patch_install():     return {'data': 'data'}
前端js代码:
[u]复制代码[/u] 代码如下:
$('#form').ajaxSubmit({     url      : '/patch/install.json',     type     : 'post',     dataType : 'json',     iframe   : true,     success: function(res) {         // code     } });
解决办法:   需要将后端返回的数据格式改成text/html格式的,如下:
[u]复制代码[/u] 代码如下:
def plain(func):     """wrap text/html reponse"""     @wraps(func)     def _inner(*args, **kwargs):         resp = func(*args, **kwargs)         if isinstance(resp, dict):             resp.setdefault('success', True)             resp.setdefault('code', 200)             resp = json.dumps(resp)             resp = cgi.escape(resp)             return current_app.response_class(resp, mimetype='text/html', headers={'charset': 'utf-8'})         elif isinstance(resp, basestring):             resp = cgi.escape(resp)             return current_app.response_class(resp, mimetype='text/html', headers={'charset': 'utf-8'})         else:             return resp     return _inner @mod.route('/patch/install.json', methods=['POST']) @plain def patch_install():     return {'data': 'data'}
注意:此例后端是用Python,如果项目中遇到同样问题,改成对应语言 总结,其实解决这个问题,简单的说就一句话“将后端返回的数据格式改成text/html格式的”
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部