解决ajax跨域访问问题

应用场景   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;
		}
	}

猜你喜欢

转载自blog.csdn.net/weixin_41690497/article/details/81384866