通知短信+运营短信,5秒速达,支持群发助手一键发送🚀高效触达和通知客户 广告
# 快速入门(十五):页面请求和AJAX 本章内容描述了如何判断页面请求类型和AJAX数据返回。 ## 判断请求类型 在很多情况下面,我们需要判断当前操作的请求类型是GET 、POST 、PUT或 DELETE,一方面可以针对请求类型作出不同的逻辑处理,另外一方面有些情况下面需要验证安全性,过滤不安全的请求。 系统内置了一些常量用于判断请求类型,包括: | 常量 | 说明 | | --- | --- | | IS_GET | 判断是否是GET方式提交 | | IS_POST | 判断是否是POST方式提交 | | IS_PUT | 判断是否是PUT方式提交 | | IS_DELETE | 判断是否是DELETE方式提交 | | IS_AJAX | 判断是否是AJAX提交 | | REQUEST_METHOD | 当前提交类型 | 使用举例如下: ~~~ class UserController extends Controller{ public function update(){ if (IS_POST){ $User = M('User'); $User->create(); $User->save(); $this->success('保存完成'); }else{ $this->error('非法请求'); } } } ~~~ > 个别情况下判断AJAX请求的时候,你可能需要在表单里面添加一个隐藏域,告诉后台属于ajax方式提交,默认的隐藏域名称是ajax(可以通过VAR_AJAX_SUBMIT配置),如果是JQUERY类库的话,则无需添加任何隐藏域即可自动判断。 ## AJAX返回 ThinkPHP可以很好的支持AJAX请求,系统的`\Think\Controller`类提供了`ajaxReturn`方法用于AJAX调用后返回数据给客户端。并且支持`JSON`、`JSONP`、`XML`和`EVAL`四种方式给客户端接受数据,并且支持配置其他方式的数据格式返回。 ajaxReturn方法调用示例: ~~~ $data = 'ok'; $this->ajaxReturn($data); ~~~ 支持返回数组数据: ~~~ $data['status'] = 1; $data['content'] = 'content'; $this->ajaxReturn($data); ~~~ 默认配置采用JSON格式返回数据(通过配置**DEFAULT_AJAX_RETURN**进行设置),我们可以指定格式返回,例如: ~~~ // 指定XML格式返回数据 $data['status'] = 1; $data['content'] = 'content'; $this->ajaxReturn($data,'xml'); ~~~ 返回数据data可以支持字符串、数字和数组、对象,返回客户端的时候根据不同的返回格式进行编码后传输。如果是JSON/JSONP格式,会自动编码成JSON字符串,如果是XML方式,会自动编码成XML字符串,如果是EVAL方式的话,只会输出字符串data数据。 > JSON和JSONP虽然只有一个字母的差别,但其实他们根本不是一回事儿:JSON是一种数据交换格式,而JSONP是一种非官方跨域数据交互协议。一个是描述信息的格式,一个是信息传递的约定方法。 默认的JSONP格式返回的处理方法是`jsonpReturn`,如果你采用不同的方法,可以设置: ~~~ 'DEFAULT_JSONP_HANDLER' => 'myJsonpReturn', // 默认JSONP格式返回的处理方法 ~~~ 或者直接在页面中用callback参数来指定。