2013-02-11 163 views
2

我想知道如何在使用jQuery进行ajax请求时在服务器端处理错误和返回值。从ajax请求返回jQuery的值

我正在做一个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

对我来说似乎很好,只要你知道你回来了,你就掌握了! – adeneo 2013-02-11 20:07:49

+0

为了返回一个简单的ID,纯文本很好。在你的php中有一个错字。 – 2013-02-11 20:08:39

回答

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] 
} 
0

处理在success回调的误差足够令人惊讶的是其他人可能很难有时间来维护你的代码。如果您遵循REST原则,那么您将希望在服务器的响应中返回4xx状态码。例如,返回400 Bad Request了一般性错误,返回409 Conflict如果有一些资源冲突,等等。然后,如果你想了解更多的细节,只是一个处理传递给ajax.

error回调函数选项错误响应HTTP status code,你可以返回一个JSON对象(甚至只是一个纯文本字符串),更详细地解释问题。在我的REST API中,我通常只是在响应主体中返回纯文本错误描述,然后将响应Content-Type设置为"text/plain"