如何通过 Ajax 将对象从 spring 控制器发送到 jsp

how to send an object from spring controller to jsp through Ajax

我有一个交易对象,我正在尝试将该对象发送到首页。我尝试发送字符串时没有问题,但无法发送对象。

这是我的控制器:

    @RequestMapping(value="/result/helloajax", method=RequestMethod.GET)
    @ResponseBody
    public MyTransaction helloahjax() {
        System.out.println("hello Ajax");
        MyTransaction tran = MyTransaction.getInstance();
        tran.setId(123);
        return tran;
    }

    @RequestMapping(value="/result", method=RequestMethod.GET)
    public String show() {
        return "result";
    }

这是我的 ajax 通话

<a href="#" onclick="doajax()">button</a>
<div class="result"></div>


function doajax() {
    $.ajax({
        type : 'GET',
        url : '${pageContext.request.contextPath}/result/helloajax',
        success : function(response) {
            $('.result').html(response.id);
        },
        error: function() {
            alert("asda");
        }
    });
};

我四处搜索,看到其他开发人员使用了 "response.result.id",但我也做不到。有什么建议吗

我建议像下面这样更改您的代码。

1.Include JSON 库到你的类路径,并为 helloahjax 方法添加 produces="application/json" 属性到 RequestMapping。

@RequestMapping(value="/result/helloajax", method=RequestMethod.GET,produces="application/json")

2.Include dataType 在您的 ajax 调用中,如下所示

    $.ajax({
        type : 'GET',
        dataType : 'json',
        url : '${pageContext.request.contextPath}/result/helloajax',
        success : function(response) {
          var obj = JSON.parse(response);
              //Now you can set data as you want
              $('.result').html(obj.id);
        },
        error: function() {
            alert("asda");
        }
    });

当您从控制器方法返回 JSON 时,URL 将更改为以下内容。在这种情况下,您不需要解析响应。相反,您可以直接访问对象变量 response.abc

${pageContext.request.contextPath}/result/helloajax.json