我在" home.jsp"中编写了一个Ajax脚本。将请求对象委托给" like.jsp"的页面然后调用servlet方法返回布尔值的页面。 我试图在html元素中显示此布尔值(<' span'>标记)。 这是Ajax脚本:
<script type="text/javascript">
function like()
{
alert('g');
var i = "a1eec";
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
try{
xmlhttp.onreadystatechange=getInfo;
xmlhttp.open("GET","like.jsp?q="+i,true);
xmlhttp.send();
}
catch(e){
alert("Unable to connect to server");
}
}
function getInfo(){
if(xmlhttp.readyState==4){
//alert('p');
var val=xmlhttp.responseText;
document.getElementById("flike").innerHTML=val;
}
else if(xmlhttp.readyState!=4)
{
//alert('t');
document.getElementById("flike").innerHTML=val;
}
}
like.jsp页面代码:
<body>
<%
System.out.print("IT IS LIKE>JSP");
String name = (String)session.getAttribute("email");
String text_id = request.getParameter("q");
boolean flag = service1.likes(text_id, name);
if(flag)
out.print(flag);
else
System.out.println("Not");
//response.sendRedirect("home.jsp");
%>
var&#39; val &#39;的值未显示在所需元素中。 我已经测试了servlet和like.jsp页面给出了手动输入,没有问题,但万一你发现出现了什么问题。
提前致谢!
答案 0 :(得分:0)
你的xmlhttp变量is out of scope。
如果我定义一个函数并在其中创建变量,那些变量 成为本地范围。任何本地范围的项目都不可见 全局范围 - 除非暴露,这意味着如果我定义函数或 新范围内的变量,除此之外无法访问 目前的范围。
通过在like()
中对其进行定义,您将其限制在like()
之外,并在undefined
中显示为getInfo()
。
将变量声明移到like()
函数之外,如下所示:
var xmlhttp;
function like() {
var i = "a1eec";
if (window.XMLHttpRequest) {
xmlhttp=new XMLHttpRequest();
}else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
//...
}
function getInfo(){
console.log(xmlhttp)
//...
}