jQuery ajax POST正在发送一个额外的GET请求

时间:2014-07-08 21:55:11

标签: javascript jquery ajax jsp

我刚开始使用jQuery而且我正在尝试执行$ .post请求,但我收到了一个帖子并且得到了(请参阅下面的日志)。我搜索了很多,只发现了两次调用ajax函数的情况。

我的案例是一个动态的表单表格,我想在提交单个表单时发送ajax POST。

这是我的javascript:

$(document).on('submit', 'form.newguess', function (event) {
    event.preventDefault();
    alert($(this).serialize());
    $.post("game", $(this).serialize());
});

这是我的JSP:

...<tbody>
    <c:forEach var="player" items="${players}">
        <tr>
            <td class="namecell"><p>${player.key}</p></td>
            <td class="guesscell">
                <p>${player.value}</p>
            </td>
            <td class="inputcell">
                <form class="newguess" action="game" method="post">
                    <input type="text" name="guess" />
                    <input type="hidden" name="player" value="${player.key}"/>
                    <input type="submit" value=">"/>
                </form>
            </td>
        </tr>
    </c:forEach>
</tbody>

这是我服务器的日志:

23:32:41,617 INFO (http-localhost/127.0.0.1:8080-3) POST - Game
23:32:41,696 INFO (http-localhost/127.0.0.1:8080-3) GET - Game

我试图删除$ .post然后我没有收到任何东西,所以肯定是$ .post。

欢迎任何想法,这一定是一个非常愚蠢的错误。

谢谢。

3 个答案:

答案 0 :(得分:0)

我认为您可以使用普通按钮代替

<input type="submit" value=">"/>

使用

<input type="button" value=">" onclick="yourFunction"/>

也许这就是为什么它发送两次,一次来自jquery,另一次来自DOM(?)

答案 1 :(得分:0)

解决了!我知道它必须是愚蠢的。

这是我在服务器上的代码:

@RequestMapping(value = "/game", method = RequestMethod.POST)
public String postPlayerGuess(@RequestParam("player") String playerName,
          @RequestParam("guess") String guess, Model model) {
    System.out.println("POST");
    gameService.setGuess(myself.getGameName(), playerName, newGuess);
    return "redirect:/game";
}

注意最后redirect:/game?是的,就是这样。我正在重定向响应,因此客户端发出了另一个GET请求。

对不起,伙计们,如果没有服务器上的代码,你就无法解决这个问题,不好!

答案 2 :(得分:0)

这是因为,你把你的表格放在循环中。因此,每次第一次迭代时,您提到的表单方法都会发布,但之后所有表单都会默认获取请求。

您需要生成唯一的&#34;名称&#34;对于每种形式。避免多个GET / POST请求。