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值给出未定义?的主要内容,如果未能解决你的问题,请参考以下文章
Firefox 和 nodejs 的 jQuery Ajax POST 错误
如何将在 Lambda 上使用 NodeJS 丰富的对象返回到 API POST 请求
jQuery Ajax Post,将它们添加到数据库,返回数据并再次重复该过程