Java jquery更新表值
我有一个保龄球游戏的应用程序。球员的名字和他们的分数一起列出。按下“滚动”按钮时,分数将更新。问题是,除非刷新页面,否则更新的分数不会出现在屏幕上 如果有人能帮忙,我将非常感激 这是主播放页面的外观:Java jquery更新表值,java,jquery,ajax,spring,Java,Jquery,Ajax,Spring,我有一个保龄球游戏的应用程序。球员的名字和他们的分数一起列出。按下“滚动”按钮时,分数将更新。问题是,除非刷新页面,否则更新的分数不会出现在屏幕上 如果有人能帮忙,我将非常感激 这是主播放页面的外观: Welcome players! 1: John: 0 2: Mark: 0 3: Paolo: 0 Pins : Roll: 0 这是UserController.java文件: package ajaxbowlgame; import java.util.
Welcome players!
1: John: 0
2: Mark: 0
3: Paolo: 0
Pins :
Roll: 0
这是UserController.java文件:
package ajaxbowlgame;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.validation.ValidationUtils;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class UserController {
GameProperties gameProps = new GameProperties();
int htmlPlayerNo = 0;
private List<Player> players = new ArrayList<Player>();
private int currPlayScore;
private int roll;
private boolean showStrike;
private int playerNo = 0;
@RequestMapping(value="/AddUser.htm",method=RequestMethod.GET)
public String showForm(){
return "AddUser";
}
@RequestMapping(value="/AddUser.htm",method=RequestMethod.POST)
public @ResponseBody JsonResponse addUser(@ModelAttribute(value="player") Player player, BindingResult result){
JsonResponse res = new JsonResponse();
ValidationUtils.rejectIfEmpty(result, "name", "Name can not be empty.");
if(!result.hasErrors()){
htmlPlayerNo++;
player.setHtmlPlayerNo(htmlPlayerNo);
players.add(player);
res.setStatus("SUCCESS");
res.setResult(players);
}else{
res.setStatus("FAIL");
res.setResult(result.getAllErrors());
}
return res;
}
@RequestMapping(value = "/play.htm", method = {RequestMethod.POST})
public String playPage(GameProperties gamePropsIn, ModelMap model) {
players.get(playerNo).setScore(currPlayScore);
players.get(playerNo).setRoll(roll +1);
gameProps.setRoll(roll);
model.addAttribute("players", players);
Player currPlay = players.get(playerNo);
int pins = gamePropsIn.getPins();
currPlay.getGame().roll(pins);
if (pins == 10) {
showStrike = true;
} else {
showStrike = false;
}
currPlayScore = currPlay.getGame().score();
roll = currPlay.getGame().getRoll();
model.addAttribute("roll", roll);
model.addAttribute("pins", pins);
if (playerNo < players.size()-1){
playerNo++;
}else{
playerNo = 0;
}
if (showStrike ) {
gameProps.setStrikeMessage("Well done, you hit a strike!");
} else {
gameProps.setStrikeMessage("");
}
return "play";
}
}
打包游戏;
导入java.util.ArrayList;
导入java.util.List;
导入org.springframework.stereotype.Controller;
导入org.springframework.ui.ModelMap;
导入org.springframework.validation.BindingResult;
导入org.springframework.validation.ValidationUtils;
导入org.springframework.web.bind.annotation.ModelAttribute;
导入org.springframework.web.bind.annotation.RequestMapping;
导入org.springframework.web.bind.annotation.RequestMethod;
导入org.springframework.web.bind.annotation.ResponseBody;
@控制器
公共类用户控制器{
GameProperties gameProps=新的GameProperties();
int htmlPlayerNo=0;
private List players=new ArrayList();
私人智力测验成绩;
私人整数滚动;
私人罢工;
私有int playerNo=0;
@RequestMapping(value=“/AddUser.htm”,method=RequestMethod.GET)
公共字符串showForm(){
返回“AddUser”;
}
@RequestMapping(value=“/AddUser.htm”,method=RequestMethod.POST)
public@ResponseBody JsonResponse addUser(@modeldattribute(value=“player”)player-player,BindingResult){
JsonResponse res=新的JsonResponse();
ValidationUtils.rejectIfEmpty(结果“名称”,“名称不能为空”);
如果(!result.hasErrors()){
htmlPlayerNo++;
player.setHtmlPlayerNo(htmlPlayerNo);
players.add(player);
res.setStatus(“成功”);
res.setResult(玩家);
}否则{
res.setStatus(“失败”);
res.setResult(result.getAllErrors());
}
返回res;
}
@RequestMapping(value=“/play.htm”,method={RequestMethod.POST})
公共字符串播放页面(GameProperties gamePropsIn,ModelMap模型){
玩家.get(playerNo).setScore(currPlayScore);
玩家.get(玩家号).setRoll(roll+1);
游戏道具。设置滚动(滚动);
model.addAttribute(“玩家”,玩家);
Player currPlay=players.get(playerNo);
int pins=gamePropsIn.getPins();
currPlay.getGame().roll(pins);
如果(引脚==10){
showStrike=true;
}否则{
showStrike=false;
}
currPlayScore=currPlay.getGame().score();
roll=currPlay.getGame().getRoll();
model.addAttribute(“滚动”,滚动);
model.addAttribute(“pins”,pins);
如果(playerNo
这是play.jsp:
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>Ajax-JQuery Bowling</title>
<script src="/ajaxbowlgame/js/jquery.js"></script>
<script type="text/javascript">
function rollBall() {
var pins = $('#pins').val();
$.ajax({
type: "POST",
url: "/ajaxbowlgame/play.htm",
data: "pins=" + pins,
success: function(response){
// we have the response
$('#pins').val('');
},
error: function(e){
alert('Error: ' + e);
}
});
}
</script>
</head>
<body>
<h2>Welcome players!</h2>
<table id = "playerslist">
<c:forEach var="player" items="${players}">
<tr><td>${player.htmlPlayerNo}:</td><td>${player.name}:</td><td id="plScore">${player.score}</td></tr>
</c:forEach>
</table>
<table>
<tr><td> Pins: </td><td> <input id="pins"><br/></td></tr>
<tr><td colspan="1"><input type="button" value="Roll" onclick="rollBall()"><br/></td></tr>
</table>
Roll: <span id="roll">0</span>
<h2> ${command.strikeMessage}</h2>
</body>
</html>
ajaxjquery保龄球
函数rollBall(){
var pins=$('#pins').val();
$.ajax({
类型:“POST”,
url:“/ajaxbowlgame/play.htm”,
数据:“引脚=”+引脚,
成功:功能(响应){
//我们得到了答复
$('#pins').val('');
},
错误:函数(e){
警报('错误:'+e);
}
});
}
欢迎玩家!
${player.htmlPlayerNo}:${player.name}:${player.score}
引脚:
滚动:0
${command.strikeMessage}
当你掷球时,你调用play.html
。当该调用完成时,您只需清除#pins
。这是你必须更新分数的地方;在success
回调时。我想知道怎么做。我尝试替换表格,但我不知道如何获得更新版本。您需要确保playPage
返回您需要的所有信息。我不知道你的模型和视图是什么样子。您可以在回调中以response
的形式访问它;将其记录到控制台以进行检查。获得数据后,您将能够访问$('#playerslist tr').eq(indexOfRowToUpdate).find('td:last').text(newPoints)代码>好的,谢谢,我该如何获取数据?我假设“newPoints”是来自响应的数据?@jchoran:是的,newPoints
将从response
参数中检索。您需要确保您的playPage
方法生成您希望在回调中使用的所有信息。将响应记录到控制台以检查它。我不知道这是否有多大区别,但我注意到最后第二个返回语句,返回模型和视图,是错误的。它实际上被注释掉了,但这并没有显示在本页上。唯一使用的return语句是“return”play“。顺便说一句,这并不是真正的“游戏”,因为敲打的PIN是从键盘输入到上面PIN标签旁边的文本字段(不可见)。