Как отправить html данных из node js во внешний интерфейс? - PullRequest
1 голос
/ 25 марта 2020

В настоящее время я создаю приложение, в котором я использовал MongoDB для хранения данных для входа, nodejs для создания API и интерфейс JS HTML для отображения страницы. Я создаю пользователя, где я передаю идентификатор электронной почты и пароль через вызов fetch ajax POST на сервер внутреннего узла. Бэкэнд API-маршрут, создающий пользователя в БД. Я хочу после создания пользователя, я хочу перенаправить на другую страницу. Как я могу это сделать? это мой фрагмент кода.

// вызов извлечения внешнего интерфейса

async function  createUser(email , password) {

return fetch("http://localhost:3000/user", 
    { 

    // Adding method type

    method: "POST", 

    // Adding body or contents to send 

    headers :{
        "content-type": "application/json"
    },

    body: JSON.stringify({
        "userId" : email.value,
        "password" : password.value
    })
});

}

// код beckend

 app.post('/user', async (req, res) => {

// res.header("Access-Control-Allow-Origin", "*");
// res.header("Access-Control-Allow-Methods", "POST,OPTIONS");
const {error} = validate(req.body);

if (error) {
return res.status(400).send(error.details[0].message);
}
let user = await User.findOne({userId : req.body.userId});
if(user) return res.status(400).send("User already registered");

let newUser = new User (
    {
        userId : req.body.userId,
        password : req.body.password
    }
);

newUser = await newUser.save();
res.redirect('/logged');
//res.send(newUser)
//res.send("<h1>Hi</h1>");
//res.sendFile((path.join(__dirname+'/loggedon.html')));
//res.send("<h1>Hi</h1>");
}

);

app.get('/logged' , function(req, res){
    res.send("<h1>Hi</h1>");
    // res.setHeader(200 , 'Content-Type' , 'text/html');
    // fs.readFile('./loggedon.html', function(err , data){
    //     res.write("<h1>Hi</h1>");
    // })

});

Я проверял отправку только HI. но это будет хорошо работать на локальном сервере. но как я буду отправлять данные в интерфейс. Пожалуйста, дайте мне знать. строки комментариев - это то, что я уже пробовал.

1 Ответ

0 голосов
/ 25 марта 2020

res.redirect отправляет ответ HTTP перенаправления, который означает «Вы запросили некоторые данные с этого URL. Вместо этого вы можете получить их по этому URL».

Поскольку вы сделали запрос с Ajax, Будет выполнено перенаправление, запрошен новый URL-адрес и результат будет передан обработчику Ajax.

Вы не написали обработчик (или, если он у вас есть, не потрудились включить его в вопрос) так что ничего не происходит.


В сторону: Важно отметить, что это не означает «Загрузить новый URL в главном окне браузера».

Новый URL-адрес будет загружен в главном окне браузера только в том случае, если запрос был предназначен для загрузки туда в первую очередь.

Ваш не был. Это запрос Ajax.


Вы могли бы , чтобы обработчик Ajax назначил новое значение для location, когда обещание разрешится.

Честно говоря, если вы хотите загрузить новую страницу, я бы поставил под сомнение использование Ajax, во-первых, и просто спроектировал бы систему, чтобы использовать отправку обычной формы без клиентской стороны JS участвует вообще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...