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

最近项目中出现上传文件返回的json数据会被提示下载,只有在ie10+中才会出现这个问题。前端使用jQuery的插件ajaxForm提交表单,后台返回的数据格式为json。代码如下:

后端Python:

代码如下:
kwargs): callback = request.args.get('callback',False) temp_content = func(*args,**kwargs) if isinstance(temp_content,dict): temp_content.setdefault('success',True) temp_content.setdefault('code',200) try: temp_content = json.dumps(temp_content,indent=4) except UnicodeDecodeError: try: temp_content = ujson.dumps(temp_content) except StandardError as e: logger.exception(e) temp_content = json.dumps({'success': False,'code': 500,'info': 'INVALID_CONTENT'}) temp_content = cgi.escape(temp_content) if callback: # 依据 ,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,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代码:

代码如下:

解决办法:   需要将后端返回的数据格式改成text/html格式的,如下:

代码如下:
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,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格式的”

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...