学习AJAX,html代码取胜'Don’我什么都不做
Learning AJAX, html code won't do anything
我为我编写的一个checkersgame设置了一个servlet,用于显示用户名、密码、胜利和失败。我想创建一个ajax程序来访问这个页面,并创建一个列出用户输赢的表(就像一个简单的领导板)。然而,我的HTML代码不起作用,我不明白为什么。我可以登录到作为变量url列出的页面,并从servlet中查看xml文件。非常感谢您的帮助。
<html>
<head>
<script type="text/javascript">
function requestUpdate()
{
var req = newXMLHttpRequest();
req.onreadystatechange = function()
{
if(req.readyState == 4)
{
displayResult(req);
}
}
var url = "http://localhost:8080/Checkers/CheckersServlet";
req.open("GET",url,true);
req.send(null);
}
function displayResult(req)
{
var div = document.getElementById("Scoreboard");
div.innerHTML = "<table border> <tr> <th> Username </th> <th> Wins </th> <th> Losses </th> </tr>" ;
var doc = req.responseXML;
var Users = doc.getElementsByTagName('Username');
var Wins = doc.getElementsByTagName('Wins');
var Losses = doc.getElementsByTagName('Losses');
var U;
var W;
var L;
for(var i = 0; i < Users.length; i++)
{
U = Users.item(i).textContent;
W = Wins.item(i).textContent;
L = Losses.item(i).textContent;
div.innerHTML = div.innerHTML + "<tr> <td>" + U + "</td> <td>" + W + "</td> <td>" + L + "</td> </tr>";
}
div.innerHTML = div.innerHTML + "</table>";
}
</script>
</head>
<body onload = "requestUpdate()">
<button onclick = "requestUpdate()">Update</button>
<div id = "Scoreboard"></div>
</body>
这是servlet代码
import java.io.IOException;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class CheckersServlet
*/
@WebServlet("/CheckersServlet")
public class CheckersServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public CheckersServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
// TODO Auto-generated method stub
response.setContentType("text/xml");
PrintWriter out = response.getWriter();
out.println("<?xml version='1.0'?>" );
BufferedReader fReader = new BufferedReader(new FileReader("/Users/adamsturge991/desktop/checkersdatabase.txt"));
String data = fReader.readLine();
out.println("<CheckersData>");
while(data != null)
{
out.println("<User>");
out.println("<Username>");
out.println(data);
out.println("</Username>");
data = fReader.readLine();
out.println("<Password>");
out.println(data);
out.println("</Password>");
data = fReader.readLine();
out.println("<Wins>");
out.println(data);
out.println("</Wins>");
data = fReader.readLine();
out.println("<Losses>");
out.println(data);
out.println("</Losses>");
out.println("</User>");
data = fReader.readLine(); //get next username or null if end of database
}
out.println("</CheckersData>");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
此行:
var req = newXMLHttpRequest();
new
之后需要一个空间,所以:
var req = new XMLHttpRequest();
(还要注意,在displayResult()
函数中不断更新div.innerHTML
不会带来好的性能。最好在字符串变量中建立所需的html,然后在最后将div.innerHTML
设置为该变量。)
此行:
var req = newXMLHttpRequest();
应为:
var req = new XMLHttpRequest();
这一行:
var doc = req.responseXML;
应为:
var doc = req.responseText;
更新:
var doc = req.responseText;
/*This is for making XML doc, otherwise `getElementsByTagName` wont work*/
if (window.DOMParser)
{
parser=new DOMParser();
xmlDoc=parser.parseFromString(doc,"text/xml");
}
else // Internet Explorer
{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.loadXML(doc);
}
/*XML DOC is ready, now parse it with `getElementsByTagName1`*/
var Users = xmlDoc.getElementsByTagName('Username');
var Wins = xmlDoc.getElementsByTagName('Wins');
var Losses = xmlDoc.getElementsByTagName('Losses');
相关文章:
- 这是什么 ==- javascript 运算符
- 我的单元测试选项是什么
- 全局变量和全局对象的属性之间有什么区别吗
- 打破承诺链的好方法是什么
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- Javascript中的空白是什么
- 元素在我的代码中不会.fadeTo.Don'I don’我不知道;s错误的JavaScript、JQuery、H
- AngularJS routeprovider赢得'Don’我什么都不做
- Grunt+Babel成功运行,但没有'Don’我什么都不做
- 可以'I don’我似乎没有从一整页纸上看出可能的意图是什么
- CGI.unescape和CGI.unescapeHTML don'Don’我什么都不做
- change和onchange don'I don’我不能在电脑上工作.可能是什么原因造成的
- 在ui中,路由器用不同的参数链接到相同的状态don'Don’我什么都不做
- 学习AJAX,html代码取胜'Don’我什么都不做
- 我可以'I don’我不知道我在做什么;m缺失,除了一个选项外,代码可以100%工作
- HTML中的JQuery;Don’我什么都不做
- JqueryUI自动完成:autoFocus=true获胜'Don’我什么都不做
- 动态定义JSON-can'I don’我没有发现我做错了什么
- 为什么模板绑定文档中提到了eventbeforeRemove,而它没有'Don’我什么都不做
- 重置间隔计时器Don't工作!什么'It’他错了