ajax跨域解决方法

2025-11-18 13:21:17

1、第一种:创建一个springboot的项目(也可以创建一个简答的java项目)。

1、 打开创建页面 选择File-new-project..

2、选择创建的项目为spring initializr 进入springboot项目创建步骤(也可以选择类型java,创建一个普通java项目)

3、输入项目名字,选择依赖web(根据项目需求选择,此次需要),选择存放目录-完成(Finish)

ajax跨域解决方法

ajax跨域解决方法

ajax跨域解决方法

ajax跨域解决方法

ajax跨域解决方法

2、第二种:创建一个简单的javaweb项目。

1、直接打开:https://jingyan.baidu.com/article/ff411625048acf12e482373a.html

2、或者百度搜索:servlet类如何映射到url路径 百度经验

ajax跨域解决方法

1、第一步:编写一个controller。

关键点是需要获取前端的callback参数并返回,包裹需要解析的json数据。

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.util.Map;

@RestController

public class TestController {

@RequestMapping("/bean")

public String testJson(HttpServletRequest request,

HttpServletResponse response, Map paramMap) {

String callback = request.getParameter("callback");

String id = request.getParameter("id");

String name = request.getParameter("name");

String sex = request.getParameter("sex");

String json = callback + "(" + "{'id':" + id + ",'name':'" + name

+ "','sex':'" + sex + "'}" + ")";

return json;

}

}

ajax跨域解决方法

2、第二步:编写前端页面请求。

1、注意需要引入jquery

2、callback=?一定要传,后台解析

3、dataType的类型一定注意在特殊的情况下定义为“json” 也是可以的 

不过一般为:dataType: 'jsonp',

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>

</head>

<body>

<script>

//ajax跨域请求

    function getAjax() {

        //基于jQuery的跨域请求

        $.ajax({

            //设置请求类型

            type:"get",

            //请求超时时间

            timeout:5000,

            //设置请求地址

            url: 'http://localhost:8080/bean?callback=?',

            //设置需要发送的数据

            data: {id:2,name:'李四',sex:'男'},

            //定义此请求为跨域请求

            dataType: 'jsonp',

            success: function (data) {

console.log(data.id+data.name+data.sex);

            },

            error: function (data) {

               console.log(data)

            }

        })

    }

    

    //发送请求

    getAjax();

</script>

</body>

</html>

ajax跨域解决方法

3、第三步:测试。

1、启动被调用服务,并测试

2、启动调用服务,打开需要调用的页面如下如下所示:

ajax跨域解决方法

ajax跨域解决方法

1、第一步:还可以使用jquery插件jquery.jsonp.js实现跨域

下载地址:https://github.com/congmo/jquery-jsonp/tree/master/src

function  jsontest(){

    //下载引入引入jquery.jsonp.js   

    //https://github.com/congmo/jquery-jsonp/tree/master/src

$.jsonp({

 url: 'http://localhost:8080/bean?callback=?',

 "success": function(data) {

  console.log(data.id+data.name+data.sex);

 },

 "error": function(d,msg) {

   console.log(data)

 }

});

    }

ajax跨域解决方法

2、第二步:$.getJSON实现跨域

$.getJSON("http://localhost:8080/bean?callback=?", {id:2,name:'李四',sex:'男'},

    function(data) {

alert(data.id+data.name+data.sex);

});

ajax跨域解决方法

3、第三步:总结。

实际上我们在参数中传输callback参数与,jquery就认为你在发送跨域请求,此时你不定义dataType: 'jsonp',请求仍然没有问题。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢