Не могу понять, как написать ответ на сервер.
Прямо сейчас у меня есть форма входа, которая отправляет данные на сервер. На стороне сервера я проверяю, имеют ли эти данные то же значение, что и данные в.json файле, и если все правильно, я хочу отправить ответ.
if (login == "login") { // if POST request comes wiht 'login' parameter
fs.readFile("JSON/DB.json", "utf8", function (err, data) {
var jsonFileArr = []; // Data from .json
jsonFileArr = JSON.parse(data);
var logPost = loginData.log; // 'log' data from request
var gotData = jsonFileArr.find(function (obj) {
// Search for the same 'log' data in .json
return obj.log === logPost;
});
if (gotData === undefined) { // No same log
console.log("ERROR: Wrong 'log' or 'pass'")
}
else if (gotData.log == logPost) { // if there is the same 'log' ,
// check for same 'pass'
if (gotDaten.pass == passPost) { // Same 'pass' found , send the response
console.log("Send Response");
response.writeHead(200, { 'Content-Type': 'application/json', });
var resObject = { "status": "OK" };
var json = JSON.stringify(resObject);
response.end(json);
console.log(json);
}
else
console.log("ERROR: Wrong 'log' or 'pass' ");
}
});
}
else {
console.log("Wrong request");
}
Ответ не отправляется, возможно, есть проблема с настройкой HTTP-узла узла. Как правильно написать ответ сервера?
Также, когда я пытаюсь использовать response.write()
он дает мне ошибку write after end
.
Это весь узел JS-сервера: jsfiddle
ИСПРАВЛЕНО
Найденная проблема, мне просто пришлось переместить мой код туда, где вызывается страница, и сделать else if
loop вместо if
Если вы используете экспресс, вы можете использовать только response.json(json)
Вы можете использовать response.setHeader(name, value)
с res.send(data)
Попробуй это
if (login == "login") { // if POST request comes wiht 'login' parameter
fs.readFile("JSON/DB.json", "utf8", function(err, data) {
var jsonFileArr = []; // Data from .json
jsonFileArr = JSON.parse(data);
var logPost = loginData.log; // 'log' data from request
var gotData = jsonFileArr.find(function(obj) {
// Search for the same 'log' data in .json
return obj.log === logPost;
});
if (gotData === undefined) { // No same log
console.log("ERROR: Wrong 'log' or 'pass'")
} else if (gotData.log == logPost) { // if there is the same 'log' ,
// check for same 'pass'
if (gotDaten.pass == passPost) { // Same 'pass' found , send the response
console.log("Send Response");
response.setHeader(
'Content-Type', 'application/json');
response.status(200);
var resObject = {
"status": "OK"
};
var json = JSON.stringify(resObject);
response.send(json);
console.log(json);
} else
console.log("ERROR: Wrong 'log' or 'pass' ");
}
});
} else {
console.log("Wrong request");
}