如何使用jquery ajax与spring mvc3

时间:2012-01-03 04:57:10

标签: ajax jquery spring-mvc

这个功能是点击按钮时的,

它只是将1row插入数据库。

插入行是完美的,但是......

问题总是返回'错误警报'。

'成功提醒'永远不会回来。

怎么做。

PS。对不起,我的英语不好。

$(function(){
    $("[name='replyWrite']").click(function(){
        var text = $("textarea").val();
        $.ajax({
            url: "http://localhost:8080/replyWrite",
            type: "POST",
            data: "no=100&id=test&comment=this is test",
            dataType: "text",
            cache: "false",
            success: function(){
                alert("Success");
                // something to do
            },
            error: function(data, textStatus, errorThrown){
                alert("error\n" + data + ", " + textStatus + ", " + errorThrown);
            }
        });
    });
});

并且replyWrite代码是..

@RequestMapping(value="/replyWrite")
public String replyWrite(@RequestParam(required=true)int no
                        , @RequestParam(required=true)String id
                        , @RequestParam(required=true)String comment){
    return boardDaoJdbc.replyWrite(id, no, comment);
}



public String replyWrite(String id, int no, String comment){
    // it will be return "1"
    return Integer.toString(this.jdbcTemplate.update("INSERT INTO testz_board_reply(id, comment, linked_idx, write_date) VALUES (?, ?, ?, DATE_FORMAT(now(), '%Y-%c-%d %H:%i')) ",
                            id, comment, no));
}

2 个答案:

答案 0 :(得分:2)

如果您使用的是ajax,则需要使用@ResponseBody注释。

所以你的映射应该是这样的:

@RequestMapping(value="/replyWrite", method=RequestMethod.POST)
@ResponseBody
public String replyWrite(@RequestParam(required=true)int no
                        , @RequestParam(required=true)String id
                        , @RequestParam(required=true)String comment){
    return boardDaoJdbc.replyWrite(id, no, comment);
}

现在在我的客户端:

<script src="../scripts/jquery-latest.js"></script>
<script type="text/javascript">
$(document).ready(function(){

    $("#replyWrite").click(function () {
        var text = $("textarea").val();
        var request = "no=100&id=test&comment=this is test",
        $.post("replyWrite", request,
                   function(data) {
                    alert(data);
                   });
        });
      });
</script>

希望它有所帮助。

答案 1 :(得分:0)

问题可能在于您的网址:http://localhost:8080/replyWrite。如果已在某个上下文路径下部署WAR应用程序,则应在URL中使用此上下文路径。

例如 - Tomcat在ROOT中有webapps个文件夹 - 只有这个“webapp”有空的上下文路径。如果您的WAR为example.war,则您的网址应为http://localhost:8080/example/replyWrite

处理此问题的常用方法是在JavaScript中添加一些服务器端处理 - 生成URL(而不是硬编码)。

例如,使用JSP:

$.ajax({
    url: "<c:url value="/replyWrite" />",
    ...

问候 Grzegorz Grzybek