Как использовать JQuery AJAX с пружиной MVC3 - PullRequest
1 голос
/ 03 января 2012

это функция при нажатии кнопки,

это просто вставить 1 строку в базу данных.

Вставить строку отлично, но ...

проблема всегда возвращает «предупреждение об ошибке».

«Предупреждение об успехе» никогда не возвращается.

как это сделать.

пс. Извините, мой английский не очень хорош.

$(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);
            }
        });
    });
});

И код ответаWrite - ..

@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 ]

2 голосов
/ 03 января 2012

Если вы используете 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>

Надеюсь, это поможет.

0 голосов
/ 03 января 2012

Возможно, проблема в вашем URL: http://localhost:8080/replyWrite.Если вы развернули свое WAR-приложение по некоторому контекстному пути, вы должны использовать этот контекстный путь в URL.

Например - у Tomcat есть папка ROOT внутри webapps - только это «веб-приложение» имеет пустой контекстдорожка.Если ваш WAR равен example.war, ваш URL должен быть http://localhost:8080/example/replyWrite.

. Обычный способ решения этой проблемы - добавить немного обработки на стороне сервера в ваш JavaScript - для генерации URL (вместожесткое его кодирование).

Например, с использованием JSP:

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

в отношении Гжегожа Grzybek

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...