首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ajax responseText未显示

Ajax responseText未显示
EN

Stack Overflow用户
提问于 2015-07-04 10:25:01
回答 1查看 186关注 0票数 0

我在"home.jsp“页面中编写了一个Ajax脚本,它将请求对象委托给"like.jsp”页面,然后调用一个返回布尔值的servlet方法。我试图在html元素(<‘span’>标记)中显示这个布尔值.下面是Ajax脚本:

代码语言:javascript
复制
<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页面代码:

代码语言:javascript
复制
<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‘val’的值没有显示在所需的元素中。我已经测试了servlet和like.jsp页面,给出了手动输入,没有问题,只是为了防止出现任何错误。

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2015-07-04 11:35:00

您的xmlhttp变量超出范围

如果我定义一个函数并在其中创建变量,那么这些变量就会成为本地作用域。任何本地作用域项在全局范围内都是不可见的,除非公开,这意味着如果我在新范围内定义函数或变量,则在当前作用域之外是不可访问的。

通过在like()中定义它,您在like()之外限制了它的使用,并且它在getInfo()中显示为undefined

将变量声明移出like()函数,如下所示:

代码语言:javascript
复制
var xmlhttp;  

function like() {
    var i = "a1eec";  
    if (window.XMLHttpRequest) {
      xmlhttp=new XMLHttpRequest();
    }else{
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    //... 
}  

function getInfo(){ 
    console.log(xmlhttp)
    //...
}

工作小提琴

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31219529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档