如何通过 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
我有一个交易对象,我正在尝试将该对象发送到首页。我尝试发送字符串时没有问题,但无法发送对象。
这是我的控制器:
@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