我的Java控制器从表单中获取数据并发回一个JSON布尔结果:
@RequestMapping(value = "/person/save", ... )
@ResponseBody
public boolean savePerson(...) {
...
return jpaPersonService.savePersonService(person);
}
表格提交按钮上的JS:
$('#savePersonForm').submit(function (event) {
event.preventDefault();
$.ajax({
url: '/person/save',
type: 'post',
data: $('#savePersonForm').serialize(),
success: function (response, textStatus, jqXHR) {
console.log("ajax success");
console.log("response: " + response);
$('#result').html(response);
},
error: function (jqXHR, textStatus, errorThrown) {
console.log('error(s):' + textStatus, errorThrown);
}
});
});
在我的控制器发送回true/false
的两种情况下,我都可以看到response: true
或response: false
。所以我确信JS得到了答案。
我的下一步是将此答案添加到div #result
中。如果是true
- 一切都很好。如果是false
我得到一个空div。经过一些测试后,如果我向其response
工作$('#result').html(response + '');
添加文字,我就知道了。{{1}}。
我使用的是jquery-2.1.4.min.js。
我在某个地方有错误或者应该是那样吗?谢谢。
答案 0 :(得分:1)
问题是因为您试图将元素的html()
设置为doesn't work的布尔false
值(尽管true
确实如此 - 我猜有这里的jQuery源代码不一致。)
要解决此问题,您需要强制将布尔类型强制转换为字符串。试试这个:
$('#result').html('' + response);
或者
$('#result').html(response.toString()); // if supported