I am trying to send form data to server side using ajax (sending a username), and in the server side perform SQL query and pass back the result to my template (EJS).
我正在尝试使用ajax(发送用户名)将表单数据发送到服务器端,并在服务器端执行SQL查询并将结果传回我的模板(EJS)。
In my server side (ajaxTest.js)
在我的服务器端(ajaxTest.js)
router.post('/', function(req, res){
console.log(req.body);
var query = connection.query("select * from account where username='" + req.body.username+ "'",function (err,result) {
console.log(query.sql);
if (err) {
console.error(err);
return;
}
console.error(result);
res.send("Result "+JSON.stringify(result));
});
});
});
In my template (ajaxTest.ejs)
在我的模板(ajaxTest.ejs)中
$(document).ready(function () {
$("#submit").on("submit",function (e) {
e.preventDefault();
data = {};
data.username = 'user101';
$.ajax({
type: 'POST',
data: JSON.stringify(data),
contentType: 'application/json',
url: 'http://localhost:3000/ajaxtest',
success: function(data) {
console.log('success');
console.log(JSON.stringify(data));
}
});
})
});
});
In the above code, result is successfully logged onto my console, but the 'success' and data does not get returned. Is there a reason why result is not being sent back to the template (ajaxTest.ejs)?
在上面的代码中,结果已成功登录到我的控制台,但不会返回“成功”和数据。有没有理由不将结果发送回模板(ajaxTest.ejs)?
I'd greatly appreciate any feedback on the situation!
我非常感谢有关情况的任何反馈!
3 个解决方案
#1
1
res.send("Result "+JSON.stringify(result));
sends not valid json.
发送无效的json。
Either use:
使用:
res.send(JSON.stringify(result));
or
要么
res.json(result);
#2
1
Its because you are corrupting the syntax of JSON by prepending it with 'Result'.
这是因为你通过在'Result'前面加上JSON的语法来破坏它。
res.send("Result "+JSON.stringify(result));
Instead do simple
相反,做简单
res.send(JSON.stringify(result));
#3
0
Your front-end expects json data. Your back end should returned corresponding data too.
你的前端需要json数据。你的后端也应该返回相应的数据。
on your node.js, please change the return line from
在你的node.js上,请更改返回行
res.send("Result "+JSON.stringify(result));
to
至
res.status(201).json(result); // return status 201, and json data (do not stringify)
#1
1
res.send("Result "+JSON.stringify(result));
sends not valid json.
发送无效的json。
Either use:
使用:
res.send(JSON.stringify(result));
or
要么
res.json(result);
#2
1
Its because you are corrupting the syntax of JSON by prepending it with 'Result'.
这是因为你通过在'Result'前面加上JSON的语法来破坏它。
res.send("Result "+JSON.stringify(result));
Instead do simple
相反,做简单
res.send(JSON.stringify(result));
#3
0
Your front-end expects json data. Your back end should returned corresponding data too.
你的前端需要json数据。你的后端也应该返回相应的数据。
on your node.js, please change the return line from
在你的node.js上,请更改返回行
res.send("Result "+JSON.stringify(result));
to
至
res.status(201).json(result); // return status 201, and json data (do not stringify)