Узел JS пишет ответ

0

Не могу понять, как написать ответ на сервер.

Прямо сейчас у меня есть форма входа, которая отправляет данные на сервер. На стороне сервера я проверяю, имеют ли эти данные то же значение, что и данные в.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

  • 0
    Какие данные вы хотите отправить клиенту и делали ли вы res.send (), чтобы отправить ответ?
  • 0
    @abdulbarik, пытается отправить JSON, а затем показать сообщение с предупреждением ().
Показать ещё 3 комментария
Теги:
webix

2 ответа

1

Если вы используете экспресс, вы можете использовать только response.json(json)

1

Вы можете использовать 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");
}
  • 0
    Ошибка получения: невозможно установить заголовок после отправки.
  • 0
    Это не должно давать ошибку
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню