PHP 利用HTTP Status Codes 传递Ajax 成功或失败的状态
一般处理Ajax 回应时会传送的信息种类有:数据、成功信息、错误信息、失败信息以及处理状态,传递的信息种类并不一致,再加上除了数据之外,通常还希望能传递处理状态,这种情况大部分会选择是以JSON 的方式传递这两个信息,以下是常见的几种格式:
但以执行状态跟操作行为作一个归纳,可以区分以下几种传递结果:
- { code: 1, msg: "OK" }
- { success: true , result: "data" , errorMsg: "" }
- { status: 'success' , result: [], errorMsg: "" }
- //...
但以执行状态跟操作行为作一个归纳,可以区分以下几种回传结果:
| 数据操作 | HTTP Method | 成功 | 错误/失败 |
|---|---|---|---|
| 读取(Read) | GET | 数据 | 错误/失败信息 |
| 新增(Create) 修改(Update) 删除(Delete) |
POST | 成功信息 | 错误/失败信息 |
从上面的归纳可以看出规律性,接着只要有方法可以传送处理的状态,以及能够区分数据的种类,其实就单纯很多,而HTTP Status Codes 就是用来传递HTTP 的处理状态,如果利用这个方式来传递自定义的处理状态,这样HTTP Content 就可以很单纯传递数据,让数据格式不受限于JSON,还可以使用其他格式(text, xml, html),而且XMLHttpRequest 本身就有处理HTTP Status Codes 的能力,而jQuery.ajax 也有提供error status 的处理,所以可以利用这个来定义状态的处理,在HTTP Status Codes 有几个已经定义状态,很适合用来传递处理状态的信息:
| 400 | Bad Request | 错误的请求 | 适用在表单内容的错误,如必填栏位未填、Email 格式错误 |
|---|---|---|---|
| 403 | Forbidden | 没有权限,被禁止的 | 适用在没有登录或权限不足 |
| 500 | Internal Server Error | 内部服务器错误 | 适用在程序的错误 |
jQuery 接收信息的范例
- $.ajax({
- type: "POST" ,
- url: document.location,
- success: function (data, textStatus, jqXHR) {
- alert(data);
- },
- error: function (jqXHR, textStatus, errorThrown) {
- alert(jqXHR.responseText);
- }
- });
PHP 传递错误信息的范例
- if (php_sapi_name() == 'cgi' ){
- header ( "Status: 400 Bad Request" );
- } else {
- header ( "HTTP/1.0 400 Bad Request" );
- }
- exit ( "储存失败!!" );
C# MVC 传递错误信息的范例
- Response.TrySkipIisCustomErrors = true ;
- Response.StatusCode = 400;
- return Content( "储存失败!!" );
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
