跨域
客户端ajax请求代码
<script language="JavaScript">
$(document).ready(function () {
$('#test').click(function () {
console.log("点击按钮")
$.ajax({
type: 'get',
async: false,
url: 'http://localhost:9999/api/web/test/table',
dataType: 'jsonp',
jsonp: 'callback',
jsonpCallback: 'success_jsonpCallback',
success: function (json) {
console.log(json);
},
error: function(){
console.log('error');
}
});
});
});
</script>
服务端代码
package com.xy.demo.common.config;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.AbstractJsonpResponseBodyAdvice;
/**
* jsonp配置,可将含有callback参数的请求返回jsonp格式的application/JavaScript数据
*/
@ControllerAdvice(basePackages = "com.xy.demo.controller")
public class JsonpAdvice extends AbstractJsonpResponseBodyAdvice{
public JsonpAdvice() {
super("callback");
}
}
@RequestMapping(value = "/web/test/table", produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody()
public Map testTable() {
Map<String, String> map = new HashMap<>();
map.put("name", "xingyun");
// JSONPObject jsonpObject = new JSONPObject(callback, map); // 这种方式返回数据类型为json而jsonp需要javascrip数据
return map;
}