JQuery Post到NodeJS返回MySQL值给出未定义?

Posted

技术标签:

【中文标题】JQuery Post到NodeJS返回MySQL值给出未定义?【英文标题】:JQuery Post to NodeJS return MySQL value gives undefined? 【发布时间】:2016-12-13 03:03:33 【问题描述】:

所以我正在尝试对我的数据库进行基本查询并使用 JQuery 拉回一个值。

JQuery 代码:

function getTokens(user, cb)      
    $.post("/getTokens", username: user, function(data) 
        return cb(data);
    );

节点:

app.post('/getTokens', function(req, res) 
    connection.query('select tokens from users where username = "' + req.body.username + '"', function(err, rows, fields) 
        if (err)
            console.error(err)
        else 
            res.send(rows[0].tokens.toString());
        
    );
);

我想将返回的值存储在一个字符串中。在回调函数中,如果我 console.log 或警告 'tokens' 参数,它会正确显示它,但是如果我像下面那样返回它,当我将它应用到#username_field 时,'tokens' 是未定义的。像这样:

totalTokens = getTokens(username, function(tokens)
    // console.log(tokens); why does this work, but the line below doesn't? 
    return tokens;
);

$('#username_field').text('Tokens: ' + tokens);

如果有人可以帮助我将返回值“令牌”放到我的#username_field 上,那就太好了。任何建议都会有所帮助,它不断返回 undefined 让我抓狂。

【问题讨论】:

【参考方案1】:

节点部分看起来不错。

改为为您的前端执行此操作。去掉 return 和变量,你不需要:

getTokens(username, function(tokens)
$('#username_field').text('Tokens: ' + tokens);
);

仅供参考,您的代码错误地使用了变量。 jquery 部分将使用totalTokens,而不是令牌。

【讨论】:

以上是关于JQuery Post到NodeJS返回MySQL值给出未定义?的主要内容,如果未能解决你的问题,请参考以下文章

JQuery POST 到 NODEJS(快递)

Firefox 和 nodejs 的 jQuery Ajax POST 错误

如何将在 Lambda 上使用 NodeJS 丰富的对象返回到 API POST 请求

jQuery Ajax Post,将它们添加到数据库,返回数据并再次重复该过程

在 NodeJs 中呈现 jquery POST 请求的响应

前端(jquery)+ 后端(nodeJS)+数据库(mysql)实现云点餐