无法使用JSON和JQuery显示从Spring MVC控制器返回的响应

时间:2012-10-26 14:10:03

标签: java jquery json jsp spring-mvc

我有一个简单的JQuery函数调用我的Spring MVC控制器:

function createDatabaseRecord() {
    if (isFormValid()) {
        $.getJSON(
                "${pageContext.servletContext.contextPath}${databaseConfigUrl}",
                {name:$('#idName').val(),
                    databaseName:$('#idDatabaseName').val(),
                    hostName:$('#idHostName').val(),
                    username:$('#idUsername').val(),
                    password:$('#idPassword').val()},
                function (data) {
                    var html = '<span>' + data + '</span>';
                    $('#idMessage').html(html);
                }
        );
    }
}

单击按钮时调用该函数,一切正常。问题是这一行:$('#idMessage').html(html);不能按预期工作。我在同一个<div>页面中有一个JSP元素。

<div id="idMessage">
</div>

我的Spring控制器方法由该函数调用:

@RequestMapping(value = DATABASE_CONFIG_RECORD_MAPPING, method = RequestMethod.GET)
public
@ResponseBody
String createDatabaseConfiguration(@RequestParam(value = "name", required = true) String name,
                                   @RequestParam(value = "databaseName", required = true) String databaseName,
                                   @RequestParam(value = "hostName", required = true) String hostName,
                                   @RequestParam(value = "username", required = true) String username,
                                   @RequestParam(value = "password", required = true) String password) {
    try {
        DatabaseConfig config = new DatabaseConfig();
        config.setName(name);
        config.setDatabaseName(databaseName);
        config.setHostName(hostName);
        config.setUsername(username);
        config.setPassword(password);
        configService.save(config);
    } catch (Exception ex) {
        LOGGER.error("Exception while create database configuration record.", ex);
        return "Error occurred while creating database configuration record: " + ex.getMessage();
    }
    return "Database configuration record successfully created.";
}

我可以在FireBug中看到响应来找我:

enter image description here。这是消息:成功创建数据库配置记录。我希望在<div>元素中显示,但不会显示。有人知道问题出在哪里吗?如果您需要更多代码,请询问。

2 个答案:

答案 0 :(得分:1)

我绝对不是Java方面的专家(虽然它看起来不错)但是认为你的问题来自于你使用jQuery的getJSON方法,但你的视图只是返回纯文本。

您需要将响应转换为JSON,或者使用$.get$.ajax转换为更加手动的AJAX请求。

答案 1 :(得分:1)

您的回复不是JSON格式。

在您的控制器中试用此代码段:

return Collections.singletonMap("result", "Database configuration record successfully created");

并在javascript中使用它:

var html = '<span>' + data.result + '</span>';