繁体   English   中英

没有从Node.js到AJAX获取数组

[英]Not getting the array from Node.js to AJAX

嗨,根据我的代码看来,我没有到达或响应从Node.js到AJAX的数组,没有其他错误或其他原因,但是我似乎无法弄清楚我的代码有什么问题,请参见下文。 预先感谢您的帮助!

下面的AJAX代码:

function update() {
let rq = new XMLHttpRequest();
    rq.onreadystatechange = function() {
        if(rq.readyState == 4) {
        var arr = JSON.parse(rq.responseText);
        for(var i = 0; i < arr.length; i++) {
        document.getElementById("message").innerHTML += "<p>" + arr[i] + "</p>";
        }
    }
    rq.open("GET", "/messages", true);
    rq.send();
  }
}

Node.js代码来处理GET:

if(req.method == "GET") {
  req.on('data', function(data) {
    console.log("You are reching GET-DATA");
  });
  req.on('end', function() {
    console.log("You are reching GET-END");
    res.writeHead(200, { "Content-Type" : "application/json" })
    console.log(JSON.stringify(arr))
    var toString = JSON.stringify(arr);
    res.end(JSON.stringify(arr));
  });
}

在此处输入图片说明

我到达console.log(req.readystate) ,它输出为“ 1”alert(“您的程序已到达rq.onreadystatechange”); 警报(“您的程序已达到rq.onreadystatechange = 4”); 然后过一会儿就会收到响应,并且我在控制台上看到错误。

在此处输入图片说明

Ajax代码具有open并在onreadystatechange回调中send 您需要将其移出该位置:

function update() {
    console.log('update called');
    let rq = new XMLHttpRequest();
    rq.onreadystatechange = function() {
        console.log('readyState: ' + rq.readyState);
        if(rq.readyState == 4) {
            console.log('responseText: ' + rq.responseText);
            var arr = JSON.parse(rq.responseText);
            for(var i = 0; i < arr.length; i++) {
                document.getElementById("message").innerHTML += "<p>" + arr[i] + "</p>";
            }
        }
    };
    // moved out of above function
    rq.open("GET", "/messages", true);
    rq.send();
}

通过添加一些console.log调用,您还可以更好地跟踪正在发生的事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM