【发布时间】:2014-10-11 10:32:07
【问题描述】:
这是我第一次尝试构建服务器...
我已经设置了一个服务器来处理一个包含预定义验证码字符串的联系表单提交。
当服务器接收到联系表单时,如果验证码字符串是预期的字符串,那么我希望它使用response.end(JSON.stringify(parsedURL)); 以解析后的联系表单查询的 JSON 进行简单响应
如果验证码字符串错误,我希望服务器响应“说”验证码错误,以便客户端要求用户重试。但我不知道该怎么做。
在服务器上:
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"..
}
});
换句话说,当服务器成功接收到请求但服务器希望让客户端知道缺少某些内容或其他情况时,是否应将来自服务器的响应作为“错误”发送(即由“错误”块在客户端的 ajax 代码上)或作为“成功”并带有适当的消息说明实际发生了什么?
【问题讨论】:
-
看来这个问题在这里有答案:stackoverflow.com/questions/14154337/…
-
我看到了,但我没有使用 express,我正在尝试先学习 Node.js,然后再逐步构建......
标签: node.js error-handling response server-side