从ajax请求返回jQuery的值

时间:2013-02-11 20:05:57

标签: jquery ajax

我想知道在使用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字符串吗?

感谢您的帮助!

2 个答案:

答案 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.