繁体   English   中英

jQuery ajax POST正在发送其他GET请求

[英]jQuery ajax POST is sending an additional GET request

我只是从jQuery开始,我正在尝试执行$ .post请求,但是我得到了一个帖子和一个get(请参阅下面的日志)。 我进行了很多搜索,仅发现它们两次调用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。

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

谢谢。

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

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

采用

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

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

解决了! 我知道那一定是愚蠢的。

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

@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请求。

抱歉,没有服务器上的代码,您不可能解决这个问题,我不好!

这是由于您已将表单放入循环中。 这样,您提到的form方法的每个第一次迭代都将发布,但在此之后,默认情况下所有表单都将获得请求。

您需要为每种表单生成唯一的“名称”。 为了避免多个GET / POST请求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM