es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

405 Error en la obtención de datos para enviar desde el frontend al backend.

Estoy trabajando en un formulario de registro en HTML. El formulario utiliza un script para tomar los datos introducidos por el usuario y convertirlos en formato JSON para que mi backend los procese. Mi editor de texto es Visual Studio Code y estoy comprobando la funcionalidad de mi código con la extensión Five Server. Cuando ejecuto el código, recibo un mensaje 405 (método no permitido) cada vez que intento enviar datos. Sospecho que cuando hago la llamada fetch, no estoy haciendo referencia correctamente al recurso. ¿Necesita mi archivo JavaScript estar en la misma carpeta que mi archivo HTML? ¿O es mi problema otra cosa?

 <script>
        const form = document.getElementById('createAccount')
        form.addEventListener('submit', registerUser)
        // Will send Data as JSON
        async function registerUser(event) {
            event.preventDefault()
            const firstName = document.getElementById('signupFname').value
            const lastName  = document.getElementById('signupLname').value
            const email     = document.getElementById('signupEmail').value
            const username  = document.getElementById('signupUsername').value
            const password  = document.getElementById('signupPword').value

        //¿Está esto bien?
        const result = await fetch('/signup', {
            method: 'POST',
            headers: {
                'Content-Type':'application/json'
            },
            body: JSON.stringify({
                firstName,
                lastName,
                email,
                password,
                username

            })
        }).then((res) => res.json())

        console.log(result)
    }
</script>



Aquí está mi código JavaScript

const express = require("express");
const router = express.Router();
const path = require('path');
router.use('/', express.static(path.join(__dirname, 'static')));

// modelo de usuario mongodb
const User = require("./../models/users");

// Manejador de contraseñas
const bcrypt = require("bcryptjs");

// Registro
router.post("/signup", (req, res) => {
  let { fname, lname, username, password, email } = req.body;
  fname    = fname.trim();
  lname    = lname.trim();
  username = username.trim();
  password = password.trim();
  email    = email.trim();

if()
// Código reducido por razones de espacio
)};
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Aquí está mi código de backend.

    Parece que estás faltando la ruta para la solicitud POST en tu código de backend. Necesitas agregar una ruta para la solicitud POST al punto final /signup. La ruta debería verse algo así:


    router.post('/signup', (req, res) => {
    // Tu código aquí
    });

    También asegúrate de que tu archivo JavaScript esté en la misma carpeta que tu archivo HTML.

Comments are closed.