1

我有一个简单的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 中看到对我的响应:

在此处输入图像描述. 这是消息:已成功创建数据库配置记录。我希望在该<div>元素中显示,但未显示。有人知道问题出在哪里吗?如果您需要更多代码,请询问。

4

2 回答 2

1

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

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

于 2012-10-26T14:18:32.607 回答
1

您的回复不是 JSON 格式。

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

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

并像这样在javascript中使用它:

var html = '<span>' + data.result + '</span>';
于 2012-10-26T14:23:28.947 回答