素材牛VIP会员
大佬们帮忙看看我这ajax哪里写错了?
 多***哈  分类:JavaScript  人气:1048  回帖:3  发布于6年前 收藏

我是模仿MDN上面这个页面的step3中的例子写的:
链接描述

这个是例子的代码:

<button id="ajaxButton" type="button">Make a request</button>

<script>
(function() {
  var httpRequest;
  document.getElementById("ajaxButton").addEventListener('click', makeRequest);

  function makeRequest() {
    httpRequest = new XMLHttpRequest();

    if (!httpRequest) {
      alert('Giving up :( Cannot create an XMLHTTP instance');
      return false;
    }
    httpRequest.onreadystatechange = alertContents;
    httpRequest.open('GET', 'test.html');
    httpRequest.send();
  }

  function alertContents() {
    if (httpRequest.readyState === XMLHttpRequest.DONE) {
      if (httpRequest.status === 200) {
        alert(httpRequest.responseText);
      } else {
        alert('There was a problem with the request.');
      }
    }
  }
})();
</script>

我运行这个例子没有问题,但是我模仿它的代码提示我未定义变量,我的代码部分:

function loadPage(userType, id){
    if (userType==="普通用户") {
        var req = new XMLHttpRequest();
        if (!req) {
            alert('Giving up :( cannot create an XMLHTTP instance');
            return false;
        }
        req.onreadystatechange = alertContents;
        req.open("GET", "edit.php?id="+id);
        req.send();
    }else{
        var req = new XMLHttpRequest();
        if (!req) {
            alert('Giving up :( cannot create an XMLHTTP instance');
            return false;
        }
        req.onreadystatechange = alertContents;
        req.open("GET", "readonly.php?id"+id);
        req.send();
    }
}
function alertContents(){
    if (req.readyState === XMLHttpRequest.DONE) {                  
        if (req.status === 200) {
            document.getElementById('sectionDetail').innerHTML = req.requestText;
        }else{
            alert('there was a problem with the request.');
        }
    }else{
        alert('there was a problem');
    }
}

然后console提示:

29行是函数alertContents 里的第一行,我看了半天,没找到的代码和例子差在哪里,求大佬指教!

 标签:javascript

讨论这个帖子(3)垃圾回帖将一律封号处理……

Lv6 码匠
黄***得 其它 6年前#1

var req = new XMLHttpRequest();这个拿到最外面试试?
你的alertContents这个函数获取不到你定义的req啊

Lv5 码农
de***st CEO 6年前#2

函数作用域的问题,req这个变量定义在loadPage这个函数,在 alertContents函数里访问不到。 最好不要在if里定义变量

Lv3 码奴
陈***子 PHP开发工程师 6年前#3

function alertContents 里,是httpRequest.readyState不是req.readyState。httpRequest在例子里是在外层定义了的。

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取