Javascript 在快速put路由中使用req.params时出错
我想使用我的Ajax put调用发送两个值作为参数。taskID是一个整数,taskCompleted是一个布尔值。当taskID为两位数长(例如12)时,my req.params显示:Javascript 在快速put路由中使用req.params时出错,javascript,node.js,ajax,express,Javascript,Node.js,Ajax,Express,我想使用我的Ajax put调用发送两个值作为参数。taskID是一个整数,taskCompleted是一个布尔值。当taskID为两位数长(例如12)时,my req.params显示: { id: 1, completed: 2false } 下面是我的Ajax调用和put路径。我想了解如何发送参数,以便我的taskID和taskCompleted不会分开 $.ajax({ method: 'PUT', url: '/list/' + taskID + t
{ id: 1, completed: 2false }
下面是我的Ajax调用和put路径。我想了解如何发送参数,以便我的taskID和taskCompleted不会分开
$.ajax({
method: 'PUT',
url: '/list/' + taskID + taskCompleted
您需要在路由定义中用斜线分隔这两个值,即使其
router.put('/:id/:complete')
才能工作
如果您将completed
参数作为请求正文的一部分发送,我会更好,因为正文用于此目的,而url标识您要更新的资源
router.put( '/:id:complete', ( req, res ) =>{
console.log( 'in router.put:', req.params );
let queryString;
if ( req.params.complete == 'true' ){
queryString = `UPDATE "tasks" SET "completed" = false WHERE "id" = $1`;
}else {
queryString = `UPDATE "tasks" SET "completed" = true WHERE "id" = $1`;
}
pool.query( queryString , [req.params.id]).then( (results) =>{
res.sendStatus( 200 );
}).catch( (err) =>{
res.sendStatus( 500 );
console.log( err );
})
})//end router.put