使用.html()的jQuery ajax句柄响应

时间:2015-05-12 15:37:05

标签: java jquery ajax spring-boot

我的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: trueresponse: false。所以我确信JS得到了答案。

我的下一步是将此答案添加到div #result中。如果是true - 一切都很好。如果是false我得到一个空div。经过一些测试后,如果我向其response工作$('#result').html(response + '');添加文字,我就知道了。{{1}}。 我使用的是jquery-2.1.4.min.js。

我在某个地方有错误或者应该是那样吗?谢谢。

1 个答案:

答案 0 :(得分:1)

问题是因为您试图将元素的html()设置为doesn't work的布尔false值(尽管true确实如此 - 我猜有这里的jQuery源代码不一致。)

要解决此问题,您需要强制将布尔类型强制转换为字符串。试试这个:

$('#result').html('' + response);

或者

$('#result').html(response.toString()); // if supported

Working example