Это моя первая попытка создания сервера ...Правильный способ ответа на клиент на Node.js?
Я установил сервер для обработки заявки на контактную форму, которая также включает в себя предопределенную строку отслеживания.
Когда сервер получает контактную форму, если строка расшифрованы от ожидаемого, то я хочу, чтобы просто реагировать с JSON из разобранного контактной формы запроса с использованием response.end(JSON.stringify(parsedURL));
Если строка расшифрованы неправильно, я хотите, чтобы сервер ответил «говоря», что ошибка была неправильной, поэтому клиент просит пользователя попробовать еще раз. Но я не знаю, как это сделать.
на Сервере:
var httpServer = http.createServer(function (request, response)
{
if (/\/contactform\?....../.test(request.url))
{
var parsedURL = url.parse(request.url, true);
var name = parsedURL.query.name;
var email = parsedURL.query.email;
var subject = parsedURL.query.subject;
var enquiry = parsedURL.query.enquiry;
var captcha = parsedURL.query.captcha;
if (captcha !== "testing")
{
// send a "bad" response to the client and include the message "bad captcha"
}
else response.end(JSON.stringify(parsedURL.query));
}
}).listen(8080);
НА КЛИЕНТА:
$.ajax({
url: "/contactform?..............",
success: function(msg)
{
console.log(msg);
},
error: function(msg)
{
// the "bad captcha" response should be handled here right ?
console.log(msg); // which should be equivalent to console.log("bad captcha");
}
});
Когда я использую response.end(JSON.stringify(parsedURL));
клиент (JQuery) считает, что "успех".
Как я могу ответить с сервера так, что выполняется «ошибка» части запроса ajax на клиенте?
Или это часть «ошибки», которая должна обрабатывать только случаи, когда сервер вообще не отвечает, т. Е. Когда что-то пошло ужасно неправильно на стороне сервера, как исключение, реальная ошибка, а не случаи, когда просто моя оценка на сервере не имеет ожидаемого результата?
Должен ли я использовать вместо response.end(...);
в обоих случаях, как в:
на Сервере:
var httpServer = http.createServer(function (request, response)
{
if (/\/contactform\?....../.test(request.url))
{
var parsedURL = url.parse(request.url, true);
var name = parsedURL.query.name;
var email = parsedURL.query.email;
var subject = parsedURL.query.subject;
var enquiry = parsedURL.query.enquiry;
var captcha = parsedURL.query.captcha;
var response = JSON.stringify(parsedURL.query);
if (captcha !== "testing") response = "bad captcha";
response.end(response);
}
}).listen(8080);
НА КЛИЕНТА:
$.ajax({
url: "/contactform?..............",
success: function(msg)
{
console.log(msg); // msg will either be the stringified object or "bad captcha"..
}
});
Другими словами, когда запрос успешно получен на сервере, но сервер хочет t клиент знает, что что-то пропало или что-то еще, если ответ от сервера будет отправлен как «ошибка» (т. обрабатывается блоком «ошибка» в коде ajax клиента) или как «успех» с соответствующим сообщением о том, что на самом деле произошло?
Кажется, что у этого вопроса есть ответы здесь: http://stackoverflow.com/questions/14154337/how-to-send-a-custom-http-status-message-in-node-express – xShirase
Я видел это, но Я не использую выражение, я сначала изучаю Node.js, а затем строю свой путь. –