前端Js中利用Ajax异步调用后台处理数据

/*******************************************

  • JS中Ajax异步调用后台处理数据(XML返回方式)
  • 并将后台查询数据拼入XML,然后返回给前端解析处理
  • 前端获取查询数据,并解析取值
    *******************************************/

//js处理部分 1、数据校验处理提示报错
function checkData(){
if ( ( ′ : c h e c k e d ′ ) . l e n g t h > 1 ) a l e r t ( " 只能选择一条记录进行保障期与缴费期定义。 " ) ; r e t u r n ; e l s e i f ( ( (':checked').length>1) { alert("只能选择一条记录进行保障期与缴费期定义。"); return; }else if(( (:checked).length>1)alert("只能选择一条记录进行保障期与缴费期定义。");return;elseif(((‘:checked’).length<1)){
alert(“<StrRes:StrRes id=“MSG_6809”/>”);
return;
}

var count;
checked = document.getElementsByName("checkbox");
for(var i=0;i<checked.length;i++){
	var productIds = document.getElementsByName("product_id");
    if(checked[i].checked){
    	var productId = productIds[i+1].value;
    }
}
var oXML = new ActiveXObject("Microsoft.XMLDOM");
oXML.async=false; //异步处理
var url="/life/servlet/com.ebao.life.oldage.config.bank.ProductConfigServlet?saction=CHECK_BASIC_LIFE&product_id="+productId;
oXML.load(url);
if (oXML.documentElement==null) {
	return false;
}
var count = oXML.documentElement.selectSingleNode("Count").text;
var errorDetail = oXML.documentElement.selectSingleNode("ErrorDetail").text;
if(count=="0"){
	window.alert(errorDetail);
	return false;
}else{
	$("#sAction").val('DEFI_DETAIL');
	form1.submit();
}

}

//Java处理部分 1、数据校验提示错误
/* 通过后台数据处理校验,并以XML的形式返回给前端处理,进行错误提示 */
public void disposeCheckBasicLife(HttpServletRequest request,HttpServletResponse response) throws GenericException {
try {
ProductConfigDAO dao = new ProductConfigDAO();
String errorDetail = “”;
int count = 0;
Long productId = Long.valueOf(Tools.toLong(event.getData(“product_id”)));
count = dao.checkBasicLifeData(productId);

		if(count==0){
			errorDetail = "保障期与缴费期定义”未建立关联,请先勾选该产品,再点击保存,建立关联后再操作!";
		}
		StringBuffer sbXML = new StringBuffer();
		sbXML.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>");
		sbXML.append("<OutEntryError>");
		sbXML.append("<Count>").append(count).append("</Count>");
		sbXML.append("<ErrorDetail>").append(errorDetail).append("</ErrorDetail>");
		sbXML.append("</OutEntryError>");
		response.setContentType("text/xml;charset=UTF-8");
		PrintWriter out = response.getWriter();
		out.println(sbXML.toString());
	} catch (Exception ex) {
		throw ExceptionFactory.parse(ex);
	}
}

//2、获取后台处理数据并取值
function selRuleType(){
var ruleType = form1.rule_type.value;
document.getElementsByName(“start_date”)[0].value = “”;
if(ruleType == 0 || ruleType == “”){
document.getElementsByName(“start_date”)[0].disabled=true;
} else {
//根据选择规则确定起始时间
var url=“/life/servlet/com.ebao.life.oldage.config.assignconfig.AssignPremiumConfigServlet?saction=SET_START_DATE&ruleType=”+ruleType;
var oXML = ajaxOper(url);
var resultCode = oXML.documentElement.selectSingleNode(“resultCode”);
if(resultCode.text != “SUCCESS”) {
var resultMsg = oXML.documentElement.selectSingleNode(“resultMsg”);
alert(resultMsg.text);
return false;
}
var list = oXML.documentElement.getElementsByTagName(“policy”); //获取policy节点中的数据
if(list.length == 0){
document.getElementsByName(“start_date”)[0].disabled=false;
}else {
for(var j=0;j<list.length;j++){
var startDate = list[j].getElementsByTagName(“startDate”)[0].text; //获取startDate节点中的数据
document.getElementsByName(“start_date”)[0].value = startDate; //将后台获取的数据传给页面name标签为start_date的value值。
document.getElementsByName(“start_date”)[0].disabled=true;
}
}
}
}
//operation Ajax
function ajaxOper(url) {
var oXML=new ActiveXObject(“Microsoft.XMLDOM”);
oXML.async=false;
oXML.load(url);
return oXML;
}
//2、后台进行数据处理,并将数据拼入XML中
public void disposeSetStartDate(HttpServletRequest request,
HttpServletResponse response) throws GenericException, Exception {
response.setContentType(“text/xml;charset=UTF-8”);

	PrintWriter out = response.getWriter();
	StringBuffer sb = new StringBuffer();
	String ruleType = request.getParameter("ruleType");
	sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n");
	sb.append("<result>\n");

	AssignPremiumConfigDao assignPremiumConfigDao = new AssignPremiumConfigDao();
	List<AssignPremiumConfigForm> list = assignPremiumConfigDao.setStartDate(ruleType);
	sb.append("<list>\n");
	for (AssignPremiumConfigForm item : list) {
		sb.append("<policy>\n");
		sb.append("<startDate>").append(item.getStartDate()).append(
				"</startDate>\n");
		sb.append("</policy>\n");
	}
	sb.append("</list>\n");
	sb.append("<resultCode>").append("SUCCESS").append("</resultCode>\n");
	sb.append("<resultMsg>").append("").append("</resultMsg>\n");
	sb.append("</result>");
	out.println(sb.toString());
}

/**************************************

  • Ajax异步处理json返回方式 data:{},为入参
  • success: function(json) 和 error:function(json)
  • 分别是成功和失败的数据处理解析
    **************************************/
    function doSplit(){
    var feeID = form1.fee_id.value;
    var policyID = form1.sel_policy_id.value;
    var invoiceId = form1.sel_invoice_id.value;
    var invoiceStatus = form1.sel_invoice_status.value;
    var payPrintFlag = form1.pay_print_flag.value;
    var returnInvoiceId =“”;
    var returnFpdm= “” ;
    var returnFphm= “” ;
    var returnKprq= “” ;
    var allInvoiceId = “”;
    var returnXmlId = “”;
    var returnXmlInfo = “”;

$.ajax({
type : ‘GET’,
dataType : ‘json’,
cache : false,
url : ‘<%=UrlMap.mapServletUrl(“com.ebao.life.invoiceprint.PaperInvoicePrintServlet”)%>’,
data : {
saction : ‘RENEW_PAPERINVOICEPRINT_OPEN’,
fee_id : feeID,
policy_id : policyID,
invoice_id : invoiceId,
invoice_status : invoiceStatus,
pay_print_flag : payPrintFlag
},
success: function(json) {
var count = 0;
var openFlg = false;
for(var o in json){
if (json[o].error_code == ‘ERR_39937’) {
alert(“<StrRes:StrRes id=“ERR_39937” />”);
form1.btnOpen.disabled = false;
return;
}
if (count > 0) {
if(openFlg){
returnInvoiceId=returnInvoiceId +‘,’;
returnFpdm = returnFpdm +‘,’;
returnFphm = returnFphm +‘,’;
returnKprq = returnKprq +‘,’;
}
allInvoiceId = allInvoiceId+‘,’;
returnXmlId = returnXmlId+‘,’;
returnXmlInfo = returnXmlInfo+‘,’;
}

	          //4.调用开具接口
		var returnXml= InvoiceIssue(json[o].reqxml)	;

			  //获取对应节点中的数据值
	          var returncode = getTotalMidValue(returnXml, "<returncode>","</returncode>");	//
	          var returnmsg = getTotalMidValue(returnXml, "<returnmsg>","</returnmsg>");	//
	          var fpdm = getTotalMidValue(returnXml, "<fpdm>","</fpdm>");	//
	          var fphm = getTotalMidValue(returnXml, "<fphm>","</fphm>");	//
	          var kprq = getTotalMidValue(returnXml, "<kprq>","</kprq>");	//
	          allInvoiceId=allInvoiceId+json[o].invoice_id;
	          returnXmlId = returnXmlId + json[o].xml_id;
	          returnXmlInfo = returnXmlInfo + returnXml;
	          if(returncode==0){
	          	alert('<StrRes:StrRes id="MSG_355314" />');	
	          	form1.btnOpen.disabled = false;
	          	returnInvoiceId=returnInvoiceId+json[o].invoice_id;	           
	          	returnFpdm=returnFpdm + fpdm  ;
	          	returnFphm=returnFphm + fphm  ;
	          	returnKprq=returnKprq + kprq  ;
	          	openFlg = true;
	          }else{
	          	alert('<StrRes:StrRes id="MSG_359084" />'+returnmsg);
	          	form1.btnOpen.disabled = false;
	          }
	          count++;
        }//end for

        form1.returnInvoiceId.value =returnInvoiceId;
        form1.returnFpdm.value =returnFpdm;
        form1.returnFphm.value =returnFphm;
        form1.returnKprq.value =returnKprq;
        form1.allInvoiceId.value =allInvoiceId;
        form1.returnXmlInfo.value =returnXmlInfo;
        form1.returnXmlId.value =returnXmlId;

        //保存开具数据
        form1.saction.value = "RENEW_PAPERINVOICEPRINT_OPEN_SAVE";
        form1.action = "<%=UrlMap.mapServletUrl("com.ebao.life.invoiceprint.PaperInvoicePrintServlet")%>" ;
        form1.submit();
    },
    error:function(json) {
    	alert('<StrRes:StrRes id="MSG_356435"/>');
    }
}
);

}

public void disposePaperInvoicePrintOpen(HttpServletRequest request, HttpServletResponse response, long empID) throws GenericException {
Log.info(“======= Renew disposePaperInvoicePrintOpen start ========”);
String policyID = “”;
String feeID = “”;
String invoiceID = “”;
String invoiceStatus = “”;
try {
policyID = request.getParameter(“policy_id”);
feeID = request.getParameter(“fee_id”);
invoiceID = request.getParameter(“invoice_id”);
invoiceStatus = request.getParameter(“invoice_status”);
//***add by xxxxxxx需求–>>“是否打印非收入款项”
String payPrintFlag = event.getData(“pay_print_flag”);
response.setContentType(“application/json;charset=UTF-8”);
PrintWriter out = response.getWriter();
StringBuffer json = new StringBuffer();
//xxxx权限 modify by hedl 2017-1-18
if (PsPaperInvoicePrintDAO.getOrganIdConfig(event.getLifeUser().getOrganId(),Long.parseLong(policyID))){
json.append(" [{“);//发票信息
json.append(”‘error_code’:“).append(”‘ERR_39937’“);
json.append(”}“);
json.append(”]");
}else{
// 价税分离处理 并 获取相应的xml信息
json = bean.vatSplitInvoice(policyID, invoiceID, Long.parseLong(feeID), empID, invoiceStatus,payPrintFlag);
}

		Log.info("===== Renew disposePaperInvoicePrintOpen end========");
		Log.info("disposePaperInvoicePrintOpen returnXml:   " + json.toString());

		out.println(json.toString());
		out.close();

	} catch (Exception ex) {
		bean.insertInvoiceXml("", getExceptionMsg(ex), invoiceID, feeID , "Renew_Do_Open_Error", "");
		throw ExceptionFactory.parse(ex);
	}
}

 public StringBuffer vatSplitInvoice(String policyId, String invoiceId, long feeID, long empId ,String invoiceStatus, String payPrintFlag) throws
      GenericException {
	  
	  List<Long> invoices = new ArrayList<Long>();
	  StringBuffer json = new StringBuffer();
	  String oneInvoiceInfo = "";
	  long xmlId = 0;
	  try{
		  if (invoiceId.equals("")){
			  //调用价税分离接口
			  dao.vatSplitInvoice(Long.parseLong(policyId), feeID, empId, payPrintFlag);
			  
			  //获取当前续期保单下的invoices
			  invoices = dao.getInvioceIds(feeID);
		  }else if("3".equals(invoiceStatus) || "4".equals(invoiceStatus) || "5".equals(invoiceStatus)){
			  NBPaperInvoicePrintDAO NBDao = new NBPaperInvoicePrintDAO();
			  invoices.add(NBDao.reOpenInvoice(Long.parseLong(invoiceId), empId)); 
		  }else{
			  invoices.add(Long.parseLong(invoiceId)); 
		  }

		  json.append(" [");
		  //获取发票的json 
		  for(int i=0; i<invoices.size(); i++){
			  json.append("{");
			  json.append("'error_code':").append("''").append(",");
		      json.append("'invoice_id':").append("'"+invoices.get(i)+"'").append(",");
		      oneInvoiceInfo = dao.getInvioceInfo(invoices.get(i),feeID);
		      json.append("'reqxml':").append("'"+ oneInvoiceInfo +"'").append(",");
		      
		      // 拼接发票操作日志的ID,调用开具后,根据日志ID保存税控返回信息。
		      xmlId = this.insertInvoiceXml(oneInvoiceInfo, "", String.valueOf(invoices.get(i)), String.valueOf(feeID), "Renew_Split_Invoice_Xml","");
		      json.append("'xml_id':").append("'"+ xmlId +"'");
		      json.append("}");
		      if(i < invoices.size()-1){
		    	  json.append(",");
		      }else{
		    	  json.append("");
		      } 
		  }
		  json.append("]");

		  return json; 
		  
	  }
	  catch (Exception e) {
		  throw ExceptionFactory.parse(e);
	  }
  }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值