日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
jsonP格式接口實(shí)現(xiàn)-創(chuàng)新互聯(lián)

單位開發(fā)了一個(gè)app系統(tǒng),app外包,服務(wù)由自開發(fā)的薪資查詢系統(tǒng)提供。app與后端交互采用jsonp解決跨域問題。

創(chuàng)新互聯(lián)專注于企業(yè)營銷型網(wǎng)站、網(wǎng)站重做改版、三河網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁面制作、商城建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為三河等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

JSONP的實(shí)現(xiàn),需要加上一個(gè)callback,JSONP和普通JSON的區(qū)別在于普通JSON,返回時(shí)

out.write("{name:'Xie Feng'}");

而jsonp的返回則是

out.write("callback({name:'Xie Feng'}");

callback實(shí)際是一個(gè)js端的函數(shù)名稱,雙方可以任意約定

所以對(duì)于服務(wù)器端唯一區(qū)別在于,返回的string多一個(gè)callback(xxxx)

  • jsonp只能使用get請求,解決同源問題,返回javascript代碼,因?yàn)檎埱骿avascript文件是沒有同源問題的。 

  • 當(dāng)請求數(shù)據(jù)類型為jsonp時(shí),會(huì)將callback=jsonpCallback加在url上,http://localhost:8090/api/testcallback=jsonpCallback 

  • 前臺(tái)javascript中定義jsonpCallback函數(shù),此函數(shù)必須定義在window下,也就是全局的函數(shù),否則找不到。 

  • 后臺(tái)獲取請求的callback參數(shù)值jsonpCallback,返回字符串"jsonpCallback(result)",result為返回結(jié)果。 

  • 請求返回的是script tag,首先會(huì)調(diào)用jsonpCallback函數(shù),不管是否找到該函數(shù),都會(huì)調(diào)用success函數(shù)。 

  • 如果沒有定義jsonp和jsonpCallback,jsonp默認(rèn)為"callback",jsonpCallback會(huì)是Jquery自動(dòng)生成的函數(shù)名。

可以參考例子。

代碼如下,struts配置:


			jsonp.jsp
		

jsonp.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
 
String jsoncallback = request.getParameter("callback");
String jsonResult = (String)request.getAttribute("salaryResult");
out.println("callback("+jsonResult+")");
%>

方法實(shí)現(xiàn)

public String querySalaryByKeyForApp() {
		try{
			SalUserEntity salUserQuery = new SalUserEntity();
			if(salaryVo == null || salaryVo.getSalaryEntity() == null){
				salaryResult = "{errorMsg : 錯(cuò)誤}";
				return SUCCESS;
			}
			String staffId = salaryVo.getSalaryEntity().getStaffId();
			String year = salaryVo.getSalaryEntity().getYear();
			String month = salaryVo.getSalaryEntity().getMonth();
			String password = salaryVo.getSalaryEntity().getPassword();
			if(StringUtils.isEmpty(staffId) || StringUtils.isEmpty(year) || StringUtils.isEmpty(month) 
					|| StringUtils.isEmpty(password)){
				salaryResult = "{errorMsg : 錯(cuò)誤}";
				return SUCCESS;
			}
			salUserQuery.setStaffId(staffId);
			salUserQuery.setPassword(password);
			if(salUserService.valUser(salUserQuery)){
			
				salUserService.valUser(salUserQuery);
				List entities = salaryService.querySalaryList(salaryVo.getSalaryEntity());
				if(entities == null || entities.size() != 1){
					throw new SalaryException("您的薪資數(shù)據(jù)未錄入,新聯(lián)系HR!");
				}
				List> valueMap = entity2ListOfMap(entities.get(0));
				
				
				JSONArray jsonObject = JSONArray.fromObject(valueMap);
				
				salaryResult = jsonObject.toString();
			//	jsonObject.accumulate("jsonObject",entities.get(0));
			//	salaryVo.setSalaryEntity(entities.get(0));
				return SUCCESS;
			} else {
				salaryResult = "{errorMsg : 錯(cuò)誤}";
				return SUCCESS;
			}
		}catch (Exception e) {
			salaryResult = "{errorMsg : 錯(cuò)誤}";
			return SUCCESS;
		}
		//return ERROR;
	}

json轉(zhuǎn)換:

private JSONArray entity2ListOfMap(SalaryEntity salary) {
		if(salary == null){
			salary = new SalaryEntity();
			return entity2ListOfMap(salary);
		}
		JSONArray result  = new JSONArray();
		JSONObject basicInfo = new JSONObject();//基本信息
		JSONObject wageInfo = new JSONObject();//應(yīng)發(fā)工資
		JSONObject buckleInfo = new JSONObject();//實(shí)扣工資
		JSONObject realInfo = new JSONObject();//實(shí)發(fā)工資
		JSONObject gscdInfo = new JSONObject();//公司承擔(dān)
		
		JSONArray basicMap = new JSONArray();
		JSONArray wageMap = new JSONArray();
		JSONArray buckleMap = new JSONArray();
		JSONArray realMap = new JSONArray();
		JSONArray gscdMap = new JSONArray();
		JSONObject jsonObjectgh = new JSONObject();
		jsonObjectgh.put("name", "工號(hào)");
		jsonObjectgh.put("value",salary.getStaffId());
		basicMap.add(jsonObjectgh);
		JSONObject jsonObjectxm = new JSONObject();
		jsonObjectxm.put("name", "姓名");
		jsonObjectxm.put("value",salary.getStaffName());
		basicMap.add(jsonObjectxm);
		JSONObject jsonObjectbm = new JSONObject();
		jsonObjectbm.put("name", "部門");
		jsonObjectbm.put("value",salary.getDept());
		basicMap.add(jsonObjectbm);
		JSONObject jsonObjectks = new JSONObject();
		jsonObjectks.put("name", "科室");
		jsonObjectks.put("value",salary.getClass_());
		basicMap.add(jsonObjectks);
		JSONObject jsonObjectnf = new JSONObject();
		jsonObjectnf.put("name", "年份");
		jsonObjectnf.put("value",salary.getYear());
		basicMap.add(jsonObjectnf);
		JSONObject jsonObjectyf = new JSONObject();
		jsonObjectyf.put("name", "月份");
		jsonObjectyf.put("value",salary.getMonth());
		basicMap.add(jsonObjectyf);

		basicInfo.put("category", "基本信息");
		basicInfo.put("id", "info");
		basicInfo.put("items", basicMap);
		result.add(basicInfo);
		
		return result;
	}

 接口用http形式提供:

jsonP格式接口實(shí)現(xiàn)

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開啟,新人活動(dòng)云服務(wù)器買多久送多久。


本文題目:jsonP格式接口實(shí)現(xiàn)-創(chuàng)新互聯(lián)
網(wǎng)頁路徑:http://www.dlmjj.cn/article/dosgcc.html