[英]Creating routes for Ajax calls in NodeJs
假设我的渲染HTML具有以下路线:
app.get('/profile/:id', function (req, res) { // my route
res.render('profile', { id: Number(req.params.id) }); // render the file and set a variable
});
并在我的个人资料页面的客户端javascript文件中,我想从服务器获取数据。 加载页面时,我通过向服务器发送用户ID来请求数据,并且服务器返回用户对象:
$(document).ready(function() {
var user = null;
$.ajax({
type: 'GET',
url: '', // This one is missing here
dataType: 'json'
}).done(function(data){
user = JSON.stringify(data);
});
console.log(user.name);
});
我的服务器将处理此功能:
app.get('', function (req, res) { // missing route
var userId = ; // This is missing
var userObj = getUserById(userId);
res.send(userObj);
});
我必须使用什么路线? 教程说我必须通过/profile/:id
这样的路由,但是该路由已经存在?
我尝试定义一条新路线,例如:
app.get('/reqUser/:id', function (req, res) { // Ajax route
res.send(getUserById(Number(req.params.id)));
});
对于我的Ajax调用,我传入了URL http://localhost:8888/reqUser/12345
但这似乎是错误的,因为使用Ajax调用后用户仍然为null。
那么,如何定义处理页面和Ajax调用的路由?
编辑:首先,您将要修复客户端JS中的错误,在该错误中,您尝试在从服务器中获取user
之前打印user.name
。 您可以通过将console.log
语句移至done()
回调中来解决此问题,如下所示:
$(document).ready(function() {
var user = null;
$.ajax({
type: 'GET',
url: '', // This one is missing here
dataType: 'json'
}).done(function(data){
user = JSON.stringify(data);
console.log(user.name); // log here
});
});
关于您的路线问题,您有几种选择。 以下是此问题的两种常见解决方案:
api
路由,以区分您的API请求和页面请求。 例如, app.get('/api/profile/:id, (req, res) => {...});'
/profile/2012?format=json
,该请求将以JSON返回配置文件的信息。 就个人而言,我更喜欢第一种选择,因为它可以使意图更清晰。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.