版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hurricane_li/article/details/79255685
应用场景:无法通过普通的ajax请求获取跨域的json数据。
解决方法:
方法一:
但是script标签的src属性可以跨域,通过返回一个类似于funName("result")的js,即可通过本地的funName方法获取返回的数据“result”。这种情况下的js为:
$(function(){
$("head").append("<script src='http://localhost:8080/index/getData2?callback=fun1'><\/script>");
})
相应的在服务器端需要使用传来的callback参数将要返回的数据包裹起来,包裹的方法有两种:
1.手动拼接字符串,代码为:
String result1 = callback+"({\"a\":{\"b\":{\"c\":\"1.json\"}}})";
2.使用Spring框架提供的MappingJacksonValue类,代码为:
扫描二维码关注公众号,回复:
3345288 查看本文章
MappingJacksonValue value = new MappingJacksonValue(user);
value.setJsonpFunction(callback);
方法二:
使用jQuery调用跨域服务器获取json数据,使用jsonp技术:
$.ajax({
url: "http://localhost:8080/index/getData2",
type: "GET",
dataType: "jsonp", //指定为jsonp
success: function (data) {
var result = JSON.stringify(data); //json对象转成字符串
console.log(data);
console.log(result)
}
});
在服务器端不需要任何修改,像正常情况下使用@ResponseBody注解返回为json即可。