ajax跨域问题之Jsonp解决
想必搜到这里的朋友已经对自己的问题有所了解了;不过还是不知道怎么搭建,所以我就直接奉上代码截图了;
1.前端代码
$.ajax({
url: crisUrl+"/tbdicinfocfg/dicc",
type: "GET",
dataType: "jsonp", //指定服务器返回的数据类型
jsonpCallback: "showData", // 指定回调函数名称或直接使用回掉函数success
jsonp: "callback", // 默认callback
success: function (data) {
},
error: function(){
alert('fail');
}
});
function showData(data) {
console.log(data);
}
2.后台代码
@RequestMapping(value = "/dicc")
public void loadData2(@RequestParam("callback") String callback,
HttpServletResponse response) throws IOException {
Map<String, String> data = new HashMap();
data.put("str","123");
// 转json
String jsonData = JSON.toJSONString(data);
//用回调函数名称包裹返回数据
String result = callback + "(" + jsonData + ")";
response.getWriter().write(result);
}
以上就是完整代码:
有几点需要说明:
1.jsonp是异步的,所以如果你想要通过后台返回的数据来去给页面赋值的话,可以通过jsonp的回调函数实现,也就是上述前端代码的showData()方法;
2.其中遇到过很多问题,我本来想用cross在后台直接添加一句话来搞定,可是报错,就用了jsonp。不过这个按照我这样写肯定是可以的;
原文出处:https://blog.csdn.net/yjf737155133/article/details/80438490