为什么我的ajax传到后端,后端却显示为null

你好,我的ajax是text纯文本类型,想传到后端。结果后端一直显示为null空值,说明没有传进去,这是为什么呢?

 <a href="/li1.html" style="text-decoration: none">
        <div id="co" style="overflow:hidden;background-color: black">
            <div id="cp" th:each="cangpin,cangpinStat:${cangpinlist}">
                <div id="stdlib" hidden="hidden" th:text="${cangpin.xuhao}" >div>
                <div id="cq" width="80%" height="auto">
                    <img th:src="${cangpin.path2}">
                    <p class="cqb" style="display:none" th:text="${cangpin.began}">p>
                    <p class="cqd" style="display:none" th:text="${cangpin.num}">p>
                    <p class="cqc">p>
                div>
                <div id="cqa">
                    <nobr class="span1" th:text="${cangpin.cangpinname}">nobr><br>
                    <nobr class="span2" th:text="${cangpin.type2}">nobr>
                    <nobr class="span3">限量nobr>
                    <nobr class="span4" th:text="${cangpin.totalnum}">nobr>
                    <nobr class="span5" th:text="'  '+${cangpin.sys}">nobr><br>
                    <img th:src="${cangpin.icon}" style="height: 28px;width: 28px;margin-left:25px">
                    <nobr class="span6" th:text="'  '+${cangpin.company}">nobr>
                    <nobr class="span7"  th:text="'  ¥'+${cangpin.xianjia}">nobr>
                div>
                div>
            div>
    a>


这是html的代码,其中${cangpin.xuhao}就是thymeleaf里面的需要传输的数据

 var stdlib=$("#stdlib").text();
    $.ajax({
        type:'get',
        url:'./querycp2.html',
        async:true,
        dataType:'text',
        error:"重新请求",
        data:{
            'stdlib':stdlib,
        },
        success:function (){},
        Error:function () {}
    })

这是ajax部分的代码,其中,querycp2.html是当前网页。

   @CrossOrigin
    @RequestMapping("/querycp2")
    @ResponseBody
    public Model getCangpin2(Model mp,@RequestBody(required = false) String stdlib){
        ArrayList cp= reds.getResult();
        for(int i=0;i();i++) {
            cp.get(i).setYuanjia(new DecimalFormat("#0.00").format(BigDecimal.valueOf(Double.valueOf(cp.get(i).getYuanjia()))));
            cp.get(i).setXianjia(new DecimalFormat("#0.00").format(BigDecimal.valueOf(Double.valueOf(cp.get(i).getXianjia()))));
        }
        mp.addAttribute("cangpinlist", cp);
        mp.addAttribute("stdlib",stdlib);
        return mp;
    }

这是后端代码,其中,stdlib字符串就是我要接收的字符串。
可是,stdlib为什么显示是空值null呢。也就是前端的数据并没有传到后端,结果变成空值。
这是为什么呢。

  1. 后端不要写@RequestBody,默认从url获取参数
  2. ajax去掉dataType:'text', url路径不对,参数'stdlib':stdlib拼接在url后采用 ?key=value格式进行拼接

你前端传的是一个json,但是后端接受用的String 单字段接受肯定是空的, 后端应该用一个类 其中字段为 stdlib 来接收

img

这种问题,一般都是数据格式的问题,建议联调后端接口的时候,确认后端需要的数据格式,或者你们协商好