這是我第一次嘗試構建服務器...在Node.js上響應客戶端的正確方法?
我已經建立了一個服務器來處理聯繫人表單提交,其中還包括一個預定義的驗證碼字符串。
當服務器接收的聯繫方式,如果驗證碼字符串是一個預期的話,我想將它用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代碼中的「錯誤」塊處理)或作爲一個「成功」與適當的消息說明實際發生了什麼?
看來,這個問題有答案在這裏:http://stackoverflow.com/questions/14154337/how-to-send-a-custom-http-status-message-in-node-express – xShirase 2014-10-11 01:40:02
我看到,但我沒有使用快遞,我想先學習Node.js,然後建立我的路.. – 2014-10-11 01:48:18