来自rails app的json调用json的未定义请求

时间:2014-08-12 19:16:02

标签: javascript ruby-on-rails ajax xmlhttprequest request

我编写了以下代码,希望得到一个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;
}

但是我在req.open请求中一直“未定义”。

知道可能出现什么问题?

2 个答案:

答案 0 :(得分:0)

你跳过了:

req.send();

方法

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

答案 1 :(得分:0)

以下是我认为应该如何

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,这是正常的。 正如Turbod所提到的,你没有使用req.send()