JQuery Ajax用.html()处理响应



我的Java控制器从表单中获取数据,并将JSON Boolean结果发送回:

@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 + '');
我正在使用jquery-2.1.4.min.js。

我在某个地方有一个错误还是应该这样?谢谢。

问题是因为您正在尝试将元素的 html()设置为布尔值false值(即使true确实如此)来源)。

要解决此问题,您需要强制将布尔类型胁迫被胁迫。尝试以下操作:

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

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

工作示例

最新更新