HTML5网页通过ajax跨域调用接口获取json数据并解析(一)

27 篇文章 0 订阅
21 篇文章 0 订阅

接口使用Idea设计,返回json字符串。HTML5页面使用WebStorm设计,需要导入jquery。

设计接口需要有Gson包。

一、SpringBoot接口

@PostMapping("/getUserListJson")
    public String getUserListJson() {
        List<UserModel> userList = userRepository.getUserList();
        NetResult<List<UserModel>> netResult = new NetResult<>(0, "getUserListJson success", userList);
        String resultStr = new Gson().toJson(netResult);
        return resultStr;
    }
二、HTML5页面代码

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <meta http-equiv="Content-Type" Content="text/html; Charset=utf-8">
    <title></title>
    <!--<script type="text/javascript" src="js/jquery-1.8.2.min.js"></script>-->
    <script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script>

</head>
<body>
<form action="http://192.168.1.101:8080/getUserInfo" method="post">
    id:<input type="text" name="id"/><br>
    <input type="submit" value="Submit"/>
</form>

<a href="http://192.168.1.101:8080/getUserAllInfo?id=4">查询</a>
<div id="info"></div>
</body>
<script type="text/javascript">
    $(function () {
        $.ajax({
            type: 'post',
            url: 'http://192.168.1.101:8080/getUserListJson',
            async: true,
            jsonp: 'jsoncallback',
            success: function (data) {

//                $('#info').html(data);
                var result = $.parseJSON(data);
                var userList = result.data;

                var tabStr = "<table border='1'>";

                $.each(userList, function (i, user) {
                    tabStr += "<tr><td>" + user.id
                            + "</td><td>" + user.name
                            + "</td><td>" + user.password
                            + "</td><td>" + user.level
                            + "</td></tr>";
                });
                tabStr += "</table>";
                $('#info').html(tabStr);

            },
            error: function () {
                $('#info').html("有问题");
            }
        });

    });
</script>
</html>

三、调用会发现不成功,因为接口没有允许跨域访问。在接口工程中添加一个类即可。

/**
 * 设置文件
 * 允许跨域访问
 * 主要服务于前端对接口的调用
 */
@Configuration
public class CorsConfig {
    private CorsConfiguration buildConfig() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedOrigin("*"); // 1
        corsConfiguration.addAllowedHeader("*"); // 2
        corsConfiguration.addAllowedMethod("*"); // 3
        return corsConfiguration;
    }

    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", buildConfig()); // 4
        return new CorsFilter(source);
    }
}

运行结果:



  • 4
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值