Estoy haciendo una llamada con ajax a mi base de datos para obtener algunos datos. Y trato de limitarlo a una identificación específica. Y tengo el backend funcionando. funciona cuando visito la URL de localhost específica o cuando la llamo desde Postman. Entonces obtengo el valor esperado. Sin embargo, cuando trato de hacer una llamada de mi cliente con AJAX, simplemente no obtengo nada. Me metí en una cosa en la que a veces funcionaba ya veces no.
const GetUserById = (id) => { let url = "/Users/1"; $.get(url, (gotUser) => { alert(gotUser.id); }) }Tengo este método que acabo de codificar para ir a /Users/1 con fines de prueba. Y cuando llamo a esto en cartero o voy a localhost:8080/Users/1 obtengo lo que esperaba. Sin embargo, aquí simplemente no va a ninguna parte.
app.get("/Users/:id", (request, response) => { let sqlCode = "select Id, Username, [Password], Credits from Users Where Id = " + request.params.id; sql.query(connString, sqlCode, (error, result) => { if (error) { console.log(error); } else { response.json(result); } }); });El lado del servidor si eso es interesante.
EDITAR: agregó una captura de prueba como esta. ni siquiera llega a la captura. Llega a la línea que es $.get(url, (gotUser) => { luego va al final de la función y no obtiene nada.
try { $.get(url, (gotUser) => { alert(gotUser.id); }) } catch (error) { console.log(error); }Un problema típico con el procesamiento de solicitudes ajax es CORS. En su caso, una solución rápida sería especificar en los encabezados de respuesta para permitir los orígenes, así:
response.header("Access-Control-Allow-Origin", "*"); response.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); De una manera más general, es posible que deba especificarlo en el nivel de la aplicación o usar cualquier paquete para lidiar con eso (cors).
EDITAR ---
app.get("/Users/:id", (request, response) => { response.header("Access-Control-Allow-Origin", "*"); response.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); let sqlCode = "select Id, Username, [Password], Credits from Users Where Id = " + request.params.id; sql.query(connString, sqlCode, (error, result) => { if (error) { console.log(error); } else { response.json(result); } }); });Si se trata de un problema cors, intente algo similar
var cors = require('cors'); app.get("/Users/:id",cors(), (request, response) => { let sqlCode = "select Id, Username, [Password], Credits from Users Where Id = " + request.params.id; sql.query(connString, sqlCode, (error, result) => { if (error) { console.log(error); } else { response.json(result); } }); });