跨域問題
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對象。
