我编写了以下代码,希望得到一个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请求中一直“未定义”。
知道可能出现什么问题?
答案 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()