未定义的ajax请求从rails应用程序调用json

undefined request on ajax call for json from rails app

本文关键字:应用程序 调用 json rails ajax 请求 未定义      更新时间:2023-09-26

我编写了以下代码,期望获得json元素数组:

var jsonArray = getEmails();
function getEmails(){
    var response = null;
    var req = new XMLHttpRequest();
    req.open('GET', 'users/emails.json');
    req.setRequestHeader( 'Content-Type', 'application/json' );
    req.onload = function() {
        if (req.readyState == 4 && req.readyState == 201) {
            response = JSON.parse( req.responseText );
        }
    };
    return response;
}

但我一直得到"未定义"的要求。打开请求。

你知道是什么问题吗?

我认为应该是这样的

var jsonArray = getEmails();
function getEmails(){
var response = null;
var req = new XMLHttpRequest();
req.setRequestHeader( 'Content-Type', 'application/json' );
req.open('GET', 'users/emails.json');
req.send();
req.onreadystatechange = function() {
    if (req.readyState == 4 && req.status == 200) {
        response = JSON.parse( req.responseText );
    }
};
return response;
}

您使用req.onload来检查响应,以及我知道您应该使用req.onreadystatechange,而您将re.readyState滥用于req.status,因此:

(req.readyState == 4 && req.readyState == 201) {

变成这样:

if (req.readyState == 4 && req.status == 200) {

检查onreadystatechange(4)上的最后一个触发器和状态码200,是否OK。正如Turbod提到的,你没有使用req.send()

您跳过了:

req.send();

方法。

下面是一个例子:https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest