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

时间:2015-01-09 06:35:22

标签: ajax jsp spring-mvc

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

所以这是我的控制器:

    @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");
        }
    });
};

我四处搜索并看到其他开发人员使用&#34; response.result.id&#34;但我也无法做到。有任何建议请。

2 个答案:

答案 0 :(得分:1)

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

1.将JSON库包含到您的类路径中,并将produces="application/json"属性添加到R​​equestMapping以获取helloahjax方法。

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

2.在ajax调用中包含dataType,如下所示

    $.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");
        }
    });

答案 1 :(得分:0)

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

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