#javascript #mongodb #post #backend #ejs
Вопрос:
Здравствуйте, когда я пытаюсь обновить пользователя на странице, я получаю ошибку Не удается ОПУБЛИКОВАТЬ /обновить-пользователь не может найти проблему, может кто-нибудь увидеть, что ошибка была сделана код ниже
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
lt;%for(var i = 0; i lt;users.length; i ){%gt; lt;trgt; lt;tdgt;lt;%= i 1%gt;lt;/tdgt; lt;tdgt;lt;%=users[i].name%gt;lt;/tdgt; lt;tdgt;lt;%=users[i].email%gt;lt;/tdgt; lt;tdgt;lt;%=users[i].Lytis%gt;lt;/tdgt; lt;tdgt;lt;%=users[i].status%gt;lt;/tdgt; lt;tdgt; lt;a href="/update-user?id=lt;%=users[i]._id%gt;" class="btn border-shadow update"gt; lt;span class="text-gradient"gt;lt;i class="fas fa-user-edit"gt;lt;/igt;lt;/spangt; lt;/agt; lt;a class="btn border-shadow delete" data-id=lt;%=users[i]._id%gt;gt; lt;span class="text-gradient"gt;lt;i class="fas fa-user-slash"gt;lt;/igt;lt;/spangt; lt;/agt; lt;/tdgt; lt;/trgt; lt;%}%gt;
Попробуйте поискать и изменить некоторые методы, но ничего не работает, и теперь это может быть неправильным, я думаю . Или что-то еще . И как сохранить все детали, поступающие из бэкенда или с внешнего интерфейса ?
Комментарии:
1. Если вы пытаетесь ОПУБЛИКОВАТЬ
update-user
, я думаю, вам нужно разрешить публикацию для этого метода:route.post('/update-user',services.update_user)
Ответ №1:
route.get('/update-user',services.update_user)
Определяется как ПОЛУЧИТЬ, но вы отправляете в него — Измените на
route.post('/update-user',services.update_user)
$.ajax (request).done(function(response){ console.log(response) lt;------------------------------------ alert("Naudotojas Atnaujintas!") })
Комментарии:
1. я сделал то, что вы сказали, но я не могу ПОЛУЧИТЬ /обновить-добавлен пользователь
2. // конфигурация приложения json app.use(express.json()) app.use(express.urlencoded({расширено:ложно}));
3.Если вам нужны оба метода 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}));
выразите