我刚开始使用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。
欢迎任何想法,这一定是一个非常愚蠢的错误。
谢谢。
答案 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请求。