应用场景 A 项目访问 B 项目 某个方法的资源,首先贴出A的请求js
$(document).ready(function () {
var id = $("#zyy_user_id").val();
if(id == null || id ==''){
layer.alert("您还未绑定云智渔账号");
return;
}
$.ajax({
type: 'GET',
url: "http://localhost:8081/hnzh_zyy/a/***",
data: {"id":id},
dataType: "jsonp", //此处修改dataType类型为jsonp
jsonp: 'jsoncallback', //定义返会方法
jsonpCallback:'showData', //返会方法名称
success: function (data) {
if(data.success){
$("#pools").empty();
for(var i = 0;i<data.body.thisList.length;i++){
$("#pools").append("<option value='"+ data.body.thisList[i].id +"'>"+ data.body.thisList[i].name +"</option>");//添加option
}
selected($("#pools").val());
}else{
layer.alert(data.msg);
}
}
});
然后 B 的controller接收请求,并返会json数据
@ResponseBody
@RequestMapping(value = { "方法路径" })
public String findDissolvedOxygen(HttpServletRequest request, HttpServletResponse response, Model model,boolean mobileLogin) {
String id = request.getParameter("id");
//前端传过来的回调函数名称
String callback = request.getParameter("jsoncallback");
AjaxJson j = new AjaxJson();
if(StringUtils.isBlank(id)){
j.setSuccess(false);
j.setMsg("你还未绑定云智渔账户");
return renderString(response, callback+"("+j.getJsonStr()+")");
}
List<FishLogPoolSet> fishLogPoolSets = mcSensorDataService.findPoolAll(id);
j.setMsg("查询成功");
j.setSuccess(true);
j.put("thisList", fishLogPoolSets);
//发送json字符串,此处注意的地方是前端定义的回调方法名callback()应将json数据传入
return renderString(response, callback+"("+j.getJsonStr()+")");
}
上述代码返会数据用到一个renderString(response,***)这个方法是将数据写出去的下面也贴出来
/**
* 客户端返回字符串
* @param response
* @param string
* @return
*/
protected String renderString(HttpServletResponse response, String string) {
try {
response.reset();
response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
response.getWriter().print(string);
return null;
} catch (IOException e) {
return null;
}
}