1. 程式人生 > >mui.ajax與伺服器(SpringMVC)傳輸json資料

mui.ajax與伺服器(SpringMVC)傳輸json資料

跨域問題

  PC端為了安全,所以禁止跨域。而我使用mui做移動web時,難免會使用pc瀏覽器進行除錯。mui.ajax是允許跨域的。為了可以除錯成功,需要對瀏覽器進行設定及。以360急速瀏覽器為例,設定如下:

  

即在目標後新增 --disable-web-security(前面有空格)

前端設定

<script type="text/javascript" charset="UTF-8">
    	regInfo = {name:'wuchao',password:'000111'};
     
		mui.ajax('http://localhost:8080/share/mobile/regist.do',{
			data:JSON.stringify(regInfo),
			dataType:'json',//伺服器返回json格式資料
			contentType: "application/json",
			type:'post',//HTTP請求型別
			timeout:10000,//超時時間設定為10秒;
			headers:{'Content-Type':'application/json'},	              
			success:function(data){
				//伺服器返回響應,根據響應結果,分析是否登入成功;
				alert(data.result);
			},
			error:function(xhr,type,errorThrown){
				//異常處理;
				alert("error"); 
			},
			headers: { 
				'Access-Control-Allow-Headers':'X-Requested-With'
			}
		});
</script>

後端設定

需要三個jar包,jackson-annotations-2.7.0.jar jackson-core-2.7.0.jar jackson-databind-2.4.5.jar(版本都選為2.4.5應該是可以得,但databind包選為2.7.0會報錯)下載地址請點選這裡

   控制器如下:

實體類接收 

@RequestMapping(value = "/mobile/regist",method=RequestMethod.POST,produces = "application/json;charset=UTF-8") 
	public @ResponseBody ModelAndView handle4Mobile(@RequestBody  Info info){
		System.out.println(info.getName()); 
		Map<String, String> map = new HashMap<String, String>();
		map.put("result", "sucess");
		return new ModelAndView(new MappingJackson2JsonView(),map);

	}

  其中Info類對應前端傳入的json資料。返回的資料對應前端success的回撥函式的data引數。

JSON物件接收

@RequestMapping(value = "/mobile/regist",method=RequestMethod.POST,produces = "application/json;charset=UTF-8") 
	public @ResponseBody ModelAndView handle4Mobile(@RequestBody  JSONObject jsondata){
		System.out.println(info.getName()); 
		Map<String, String> map = new HashMap<String, String>();
		map.put("result", "sucess");
		return new ModelAndView(new MappingJackson2JsonView(),map);

	}

  使用JSONObject物件接收前臺傳來的json資料,spring mvc會自動將前臺的字串轉換成json物件。