XMLHttpRequest返回JSON对象

时间:2014-08-25 02:16:08

标签: javascript ajax json xmlhttprequest

我想在Javascript中从getMine函数内部返回一个对象,但是当我尝试打印出该对象时,我得到了undefined。您将如何在以下函数中返回obj

            function getMine() {
                var httpRequest = new XMLHttpRequest();
                httpRequest.onreadystatechange = function() {
                    if (httpRequest.readyState === 4) { // request is done
                        if (httpRequest.status === 200) { // successfully
                            var obj = JSON.parse(httpRequest.responseText)
                            return obj;
                        }
                    }
                };
                httpRequest.open('GET', "/getTest");
                httpRequest.send();
            }
            var rs = getMine();
            console.log("2", rs);

1 个答案:

答案 0 :(得分:0)

因为getMine正在进行ajax调用,所以它本质上是异步的。当您尝试在调用getMine()之后立即记录rs的值时,ajax调用尚未完成。将console.log调用添加到onreadystatechange回调中:

httpRequest.onreadystatechange = function () {
    if (httpRequest.readyState === 4) {
        if (httpRequest.status === 200) {
            var obj = JSON.parse(httpRequest.responseText);
            console.log('responseText: ', responseText);
            return obj;
        }
    }
};

如果您需要能够使用返回值执行某些操作,那么您可能希望使用promises来处理ajax调用的异步解析。