对node.js服务器的AJAX调用返回未定义

时间:2019-03-03 16:48:21

标签: javascript node.js ajax express asynchronous

我正在尝试访问服务器端Node.js函数返回的字符串。

function createString () {
    do something ...
    console.log(finalString);
    return finalString;
};

我正在使用普通的JavaScript AJAX请求从服务器获取字符串

const xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
    do something ...
};
xhr.open('GET', 'http://localhost:5000/array');
xhr.send();

我的服务器端看起来像:

app.get('/array', (req, res) => {
        console.log('request received');
        console.log(createString());
        res.send(createString());
    }
);

createString()对于AJAX请求始终返回“未定义”,即使它在finalString中记录了正确的字符串。

我认为问题是AJAX的异步方面,但是我不确定如何告诉res.send()等待createString()运行

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您可以将reqres对象传递给createString函数。 (我假设您的createArray是一个错字,应该是createString)。确实,如果您仅具有此功能,则可以简单地拥有:

server.js

app.get('/array', createString);

createString.js

function createString (req, res) {
    do something ...
    console.log(finalString);
    return res.status(200).send(finalString);
};