www.91084.com

GVKun编程网logo

避免IE执行AJAX时,返回JSON出现下载文件(ie返回json提示下载)

9

本文将分享避免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提示下载)

避免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

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情况

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下载文件实现接受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值

ajax后台处理返回json值

public ActionForward xsearch(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) throws Exception { String parentId = request.getParameter("parentId"); String supplier = request.getParameter("supplier"); List itemList = new ArrayList(); if(parentId.equals("")){ parentId="0"; } Map map=new TawApTreeServlet().getTypeList(parentId,supplier); for (Iterator rowIt = map.keySet().iterator(); rowIt.hasNext();) { String id = (String) rowIt.next(); TawCommonsUIListItem uiitem = new TawCommonsUIListItem(); uiitem.setItemId(id); uiitem.setText((String)map.get(id)); uiitem.setValue(id); itemList.add(uiitem); } response.setContentType("text/xml;charset=UTF-8"); // 返回JSON对象 response.getWriter().print(JSONUtil.list2JSON(itemList)); return null; }

今天关于避免IE执行AJAX时,返回JSON出现下载文件ie返回json提示下载的介绍到此结束,谢谢您的阅读,有关ajax-返回json、ajaxsubmit提交表单返回json在ie浏览器下会出现下载json情况、ajax下载文件实现接受json数据和文件流两种形式、ajax后台处理返回json值等更多相关知识的信息可以在本站进行查询。

本文标签: