为什么点击之后会是undefine
来源:2-8 自由编程
慕标0359786
2020-03-24 17:32:05
package com.imooc.ajax;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson.JSON;
/**
* Servlet implementation class exeServlet
*/
@WebServlet("/exe")
public class exeServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public exeServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<Employee> list=new ArrayList<>();
list.add(new Employee("小红","职员","人事部"));
list.add(new Employee("小明","经理","技术部"));
list.add(new Employee("小白"," 。。。","无线事业部"));
String json=JSON.toJSONString(list);
System.out.println(json);
response.setContentType("text/html;charset=utf-8");
response.getWriter().print(json);
}
}package com.imooc.ajax;
public class Employee {
private String name;
private String job;
private String department;
public Employee(String name, String job, String department) {
super();
this.name = name;
this.job = job;
this.department = department;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
}<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<input id="btnEmp" type="button" value="员工列表" >
<input type="button" value="职员列表" id="b">
<input type="button" value="部门列表" id="c">
<div id="divContent"></div>
<script type="text/javascript">
//创建XmlHttpRequest对象
var xmlhttp;
if(window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
//发送ajax请求
xmlhttp.open("GET","/ajax/exe",true);
xmlhttp.send();
//处理服务器响应
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
//获取响应体的文本
var t=xmlhttp.responseText;
//把响应结果进行显示在浏览器中
var json=JSON.parse(t);
var html1="";
for(var i=0;i<json.length;i++){
var emp = json[i];
html1=html1+"<h1>"+emp.name+"</h1>";
}
}
document.getElementById("btnEmp").onclick=function(){
document.getElementById("divContent").innerHTML=html1;
}
</script>
</body>
</html>1回答
好帮手慕小尤
2020-03-24
同学你好,1. 并未进入if(xmlhttp.readyState == 4 && xmlhttp.status == 200)中,未创建html1变量,则输出html1变量自然是undefine(为定义的)
2. 建议同学在if结构外定义html1变量,并在if结构外添加xmlhttp.onreadystatechange = function()处理服务器响应。修改后代码如下所示:

var xmlhttp;
var html1="";
if(window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
//发送ajax请求
xmlhttp.open("GET","/ajax/exe",true);
xmlhttp.send();
//处理服务器响应
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
//获取响应体的文本
var t=xmlhttp.responseText;
//把响应结果进行显示在浏览器中
var json=JSON.parse(t);
for(var i=0;i<json.length;i++){
var emp = json[i];
html1=html1+"<h1>"+emp.name+"</h1>";
}
}
}
document.getElementById("btnEmp").onclick=function(){
document.getElementById("divContent").innerHTML=html1;
}如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
相似问题