![](/img/trans.png)
[英]JQuery $.ajax(),$.post() sending GET as Request Method
[英]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.