【问题标题】:trying to update user getting error Cannot POST /update-user尝试更新用户收到错误无法发布 /update-user
【发布时间】:2021-11-03 23:29:33
【问题描述】:

您好,当我尝试在页面上更新用户时出现错误无法 POST /update-user 找不到有问题有人可以看到有错误已完成下面的代码

index.js

$('#add_user').submit(function(event){
    alert("Informacija išsaugota!")
})

$('#update-user').submit(function(event){
    event.preventDefault();

let unindexed_array =$(this).serializeArray();
let data = {}
$.map(unindexed_array,function(n,i){
data[n['name']]= n['value']
})

console.log(data)

let request = {
    "url" : `http://localhost:3000/api/users/${data.id}`,
    "method" : "PUT",
    "data" : data
}

$.ajax (request).done(function(response){
    alert("Naudotojas Atnaujintas!")
})

})

if(window.location.pathname == "/"){
    $ondelete=$(".table tbody td a.delete");
    $ondelete.click(function(){
        let id = $(this).attr("data-id")
   
        let request = {
            "url" : `http://localhost:3000/api/users/${id}`,
            "method" : "DELETE",
   
        }
   
   if(confirm("Ar tikrai norite ištrinti įraša?")){
    $.ajax (request).done(function(response){
        alert("Naudotojas ištrintas!")
    location.reload()
    })
   }
   
    })

}

ROUTER.JS

const express = require('express');
const route = express.Router()

const services = require('../services/render')
const controller = require('../controller/controller')

/**
 * @description Root Route
 * @method GET/
 */

route.get('/',services.homeRoutes)
    
/**
 * @description add users
 * @method GET/ add-user
 */    

    route.get('/add-user',services.add_user)
        
/**
 * @description for update user
 * @method GET/  update-user
 */  

    route.get('/update-user',services.update_user)
    
    // API
    
    route.post('/api/users',controller.create);
    route.get('/api/users',controller.find);
    route.put('/api/users/:id',controller.update);
    route.delete('/api/users/:id',controller.delete);

    module.exports = route

_show.ejs

<%for(var i = 0; i <users.length; i++){%>

<tr>
    <td><%= i + 1%></td>
    <td><%=users[i].name%></td>
    <td><%=users[i].email%></td>
    <td><%=users[i].Lytis%></td>
    <td><%=users[i].status%></td>
    <td>
        <a href="/update-user?id=<%=users[i]._id%>" class="btn border-shadow update">
            <span class="text-gradient"><i class="fas fa-user-edit"></i></span>
        </a>
        <a class="btn border-shadow delete" data-id=<%=users[i]._id%>>
         <span class="text-gradient"><i class="fas fa-user-slash"></i></span>
     </a>
    </td>
</tr>
<%}%>

尝试搜索并更改一些方法,但没有任何效果并且现在卡住了 我猜它可能是错误的ejs。或者是其他东西 。 以及如何控制台记录来自后端或前端的所有详细信息?

【问题讨论】:

  • 如果您尝试发布到update-user,我认为您需要允许发布该方法:route.post('/update-user',services.update_user)

标签: javascript mongodb post backend ejs


【解决方案1】:

route.get('/update-user',services.update_user)

被定义为 GET,但您正在向其发布 - 更改为

route.post('/update-user',services.update_user)

$.ajax (request).done(function(response){

    console.log(response) <------------------------------------
    alert("Naudotojas Atnaujintas!")
})

【讨论】:

  • 我按照你说的做了,但我无法获取 /update-user 添加
  • // json 应用配置 app.use(express.json()) app.use(express.urlencoded({extended:false}));
  • 如果你想要两种 HTTP 方法,你必须同时定义 GET 和 POST - route.get('/update-user',services.update_user) route.post('/update-user',services.update_user) - 你可能需要基于 HTTP 方法的不同逻辑,在 services.update_user 中定义
【解决方案2】:

在此行中将get 更改为post

route.get('/update-user',services.update_user)

route.post('/update-user',services.update_user)

因为你的提交是post 方法 如果需要加app.use(express.json())app.use(express.urlencoded({extended:false}));表达

【讨论】:

    猜你喜欢
    • 2021-07-25
    • 2021-07-10
    • 2015-04-24
    • 2020-02-09
    • 2019-05-06
    • 1970-01-01
    • 1970-01-01
    • 2022-11-28
    • 2020-08-23
    相关资源
    最近更新 更多