本文将分享避免IE执行AJAX时,返回JSON出现下载文件的详细内容,并且还将对ie返回json提示下载进行详尽解释,此外,我们还将为大家带来关于ajax-返回json、ajaxsubmit提交表单返
本文将分享避免IE执行AJAX时,返回JSON出现下载文件的详细内容,并且还将对ie返回json提示下载进行详尽解释,此外,我们还将为大家带来关于ajax-返回json、ajaxsubmit提交表单返回json在ie浏览器下会出现下载json情况、ajax下载文件实现接受json数据和文件流两种形式、ajax后台处理返回json值的相关知识,希望对你有所帮助。
本文目录一览:- 避免IE执行AJAX时,返回JSON出现下载文件(ie返回json提示下载)
- ajax-返回json
- ajaxsubmit提交表单返回json在ie浏览器下会出现下载json情况
- ajax下载文件实现接受json数据和文件流两种形式
- ajax后台处理返回json值
避免IE执行AJAX时,返回JSON出现下载文件(ie返回json提示下载)
<!-- 避免IE执行AJAX时,返回JSON出现下载文件 --> <bean id="mappingJacksonHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> </bean>
ajax-返回json
function qSubType(selobj){ if(selobj!=null){ var caseSubType=document.getElementById("caseSubType"); caseSubType.options.length=0;//清空select下拉框 if(selobj.value.length!=0){ jQuery.ajax({ type:"POST",url:"${ctx}/partner/product.do?method=qProductSubType",//处理请求的action方法 //data:"selectId="+jQuery("#"+selectId).val(),//传递的参数 data:{'name':selobj.options[selobj.selectedindex].text,'id':selobj.options[selobj.selectedindex].value},//传递的参数 dataType:"html",success:function(data) { if(data!=null&&data!=''){ data=eval('('+data+')'); if(data.subtype!=null&&data.subtype!=''){ var subtypearray=data.subtype; if(subtypearray!=null&&subtypearray.length!=0){ for(var i=0;i<subtypearray.length;i++){ var temp=subtypearray[i]; var value=temp.remark; var text=temp.name; caseSubType.options.add(new Option(text,value)); } } } } },error : function() { //alert("审核失败!"); } }); } } } --返回json {subtype:[{"deleted":0,"flag":0,"id":1027,"mark":"云主机产品","name":"云主机虚拟机","parent_id":1026,"remark":"1"},{"deleted":0,"id":1028,"name":"云主机物理机","remark":"2"},"id":1029,"name":"定制云虚拟机","remark":"3"},"id":1030,"name":"定制云物理机","remark":"4"}]} --java String json="{subtype:\"\"}"; JSONArray jo = JSONArray.fromObject(productSubTypeList); json="{subtype:"+jo.toString()+"}";ajaxsubmit提交表单返回json在ie浏览器下会出现下载json情况
看到网上form可以延迟提交,采用ajaxsubmit实现,但是在后台服务器反馈json的时候出现下载的情况
网上搜素及看大神思路总结为如下:
1、简单的编写text/html格式的返回
<body> pre{"message":"保存成功","data":null,"success":true}</ >前台可以只读
2、高级点在服务器侧编写判断是否ajaxsubmit提交,如果是就text、string对待,不是则还是json
ajax下载文件实现接受json数据和文件流两种形式
需求:前端下载文件,调用后端下载接口,如果后端报错需要给出错误信息如果没有报错可以正常下载。
解决方案:
方案一:首先想到的是分成两个接口首先询问是否可以下载,如果可以下载再去下载
方案二:通过原生ajax请求的状态码区分
function xhrGet (type ,url, fn){
// XMLHttpRequest对象用于在后台与服务器交换数据
var xhr = new XMLHttpRequest();
xhr.open(type, url, true);
xhr.setRequestHeader(''X-Requested-With'', ''XMLHttpRequest'');
xhr.setRequestHeader(''Accept'', ''application/json, text/plain, */*'');
xhr.onreadystatechange = function() {
// readyState == 4说明请求已完成
if(xhr.readyState == this.HEADERS_RECEIVED){
if(xhr.getResponseHeader(''Content-Type'')==''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet''){
xhr.abort();
window.location.href=url;
return;
}
}
if (xhr.readyState == 4 && xhr.status == 200) {
// 从服务器获得数据
try{
let res = JSON.parse(xhr.responseText);
if(res.rc==''9''){
window.location.href=location.protocol+"//"+location.host+''/api/account/home?url=''+encodeURIComponent(location.protocol+"//"+location.host+''/#/home'');
return;
}
if(res.rc==''3''){
window.location.href="#/403";
return;
}
fn.call(this, res);
}catch (error){
}
}
};
xhr.send();
}
我们onreadystatechange方法的回调函数是readyState,readyState标识不同的状态,当readyState==this.HEADERS_RECEIVED时,即服务器的相应头部已返回,那么我们获取头部的content-type,如果是application/json就是错误信息,执行正常的操。如果是下载文件对应的content-type,比如excel文件为''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'',我们放弃该次,直接去访问该文件的下载地址即可正常下载。
附上readystate各阶段状态信息。
ajax后台处理返回json值
今天关于避免IE执行AJAX时,返回JSON出现下载文件和ie返回json提示下载的介绍到此结束,谢谢您的阅读,有关ajax-返回json、ajaxsubmit提交表单返回json在ie浏览器下会出现下载json情况、ajax下载文件实现接受json数据和文件流两种形式、ajax后台处理返回json值等更多相关知识的信息可以在本站进行查询。
本文标签: