跨域

客户端ajax请求代码
  1. <script language="JavaScript">
  2. $(document).ready(function () {
  3. $('#test').click(function () {
  4. console.log("点击按钮")
  5. $.ajax({
  6. type: 'get',
  7. async: false,
  8. url: 'http://localhost:9999/api/web/test/table',
  9. dataType: 'jsonp',
  10. jsonp: 'callback',
  11. jsonpCallback: 'success_jsonpCallback',
  12. success: function (json) {
  13. console.log(json);
  14. },
  15. error: function(){
  16. console.log('error');
  17. }
  18. });
  19. });
  20. });
  21. </script>

服务端代码
  • 服务端配置代码
  1. package com.xy.demo.common.config;
  2. import org.springframework.web.bind.annotation.ControllerAdvice;
  3. import org.springframework.web.servlet.mvc.method.annotation.AbstractJsonpResponseBodyAdvice;
  4. /**
  5. * jsonp配置,可将含有callback参数的请求返回jsonp格式的application/JavaScript数据
  6. */
  7. @ControllerAdvice(basePackages = "com.xy.demo.controller")
  8. public class JsonpAdvice extends AbstractJsonpResponseBodyAdvice{
  9. public JsonpAdvice() {
  10. super("callback");
  11. }
  12. }
  • 服务端api代码
  1. @RequestMapping(value = "/web/test/table", produces = MediaType.APPLICATION_JSON_VALUE)
  2. @ResponseBody()
  3. public Map testTable() {
  4. Map<String, String> map = new HashMap<>();
  5. map.put("name", "xingyun");
  6. // JSONPObject jsonpObject = new JSONPObject(callback, map); // 这种方式返回数据类型为json而jsonp需要javascrip数据
  7. return map;
  8. }