我想知道在使用jQuery发出ajax请求时,我应该如何处理服务器端的错误和返回值。
我正在从ajax请求执行数据库插入,我想将数据库插入主键ID返回给jQuery。但如果没有插入任何内容,或者某些验证失败,我想返回错误。这就是我通常这样做的方式:
这是我的ajax请求:
$.ajax({
type: 'POST',
url: "test.php",
data: {stuff: stuff, stuff2: stuff2},
success: function(response){
switch( parseInt(response) ) {
// Display different messages depending on return value
}
},
error: function() {
}
});
了Serverside:
if (some validation) { echo 1; exit; }
if (other validation) { echo 2; exit; }
if (everything went okay) { echo database id; exit; }
你不需要天才就能理解这是错误的编码。这种情况下的最佳做法是什么?我应该返回一个JSON字符串吗?
感谢您的帮助!
答案 0 :(得分:0)
JSON效果很好。拥有一个带有“结果”键或“错误”键的JSON对象。
{result: [value]} or {error: [message]}
在jQuery回调中检查响应对象中的键
if("result" in response} {
// success
} else {
// error
alert( (response.error || "ERROR") );
}
编辑您当然可以根据需要进行复杂化。 “类型”,“值”,“消息”是一些常见的JSON密钥。
{
type: [SUCCESS|WARNING|ERROR]
value: [expected return value|array of warnings|array of errors]
message: [some custom message to display to the user]
}
答案 1 :(得分:0)
处理success
回调中的错误非常令人惊讶,以至于其他人可能很难维护您的代码。如果您遵循REST原则,那么您将需要从服务器返回响应中的4xx状态代码。例如,返回400 Bad Request
表示一般错误,如果存在某种资源冲突则返回409 Conflict
等。然后,处理传递给{error
函数回调选项的错误响应{1}}
如果您想要更多只有HTTP status code的详细信息,您可以还返回一个更详细地解释问题的JSON对象(甚至只是一个纯文本字符串)。在我的REST API中,我通常只返回响应正文中错误的纯文本描述,然后将响应Content-Type设置为ajax.
。