この記事では、thinkphp の AJAX return ajaxReturn() メソッドを分析します。参考のために皆さんと共有してください。詳細は次のとおりです。
システムは、AJAX クラス ライブラリをサポートします。Action クラスは、AJAX 呼び出し後にクライアントにデータを返すための ajaxReturn メソッドを提供します。また、クライアントからデータを受信するための JSON、XML、および EVAL の 3 つの方法もサポートしています。これらは、DEFAULT_AJAX_RETURN を構成することで設定できます。デフォルトの構成では、JSON 形式を使用してデータを返します。さまざまな AJAX クラス ライブラリを選択するときに、さまざまな方法を使用できます。
ThinkPHP の ajaxReturn メソッドを使用してデータを返す場合は、特定の戻りデータ形式の仕様に準拠する必要があります。 ThinkPHP によって返されるデータ形式は次のとおりです。
status 操作ステータス
info プロンプト情報
data 戻りデータ
$this->ajaxReturn(返回数据,提示信息,操作状态);
return data データは文字列、数値、配列、およびオブジェクトをサポートでき、返されるときにさまざまな戻り形式に従ってエンコードされます。送信後にクライアントに送信します。 JSON形式の場合は自動的にJSON文字列にエンコードされ、EVALモードの場合は自動的にXML文字列にエンコードされ、文字列データのみが出力されます。ステータスと情報情報は無視されます。
以下は簡単な例です:
$User=M("User");//实例化User对象 $result = $User->add($data); if ($result){ //成功后返回客户端新增的用户ID,并返回提示信息和操作状态 $this->ajaxReturn($result,"新增成功!",1); }else{ //错误后返回错误的操作状态和提示信息 $this->ajaxReturn(0,"新增错误!",0); }
$data['status'] = 1; $data['info'] = 'info'; $data['size'] = 9; $data['url'] = $url; $this->ajaxReturn($data,'JSON');
thinkphp ソースコード:
/** * Ajax方式返回数据到客户端 * @access protected * @param mixed $data 要返回的数据 * @param String $type AJAX返回数据格式 * @return void */ protected function ajaxReturn($data,$type='') { if(func_num_args()>2) {// 兼容3.0之前用法 $args = func_get_args(); array_shift($args); $info = array(); $info['data'] = $data; $info['info'] = array_shift($args); $info['status'] = array_shift($args); $data = $info; $type = $args?array_shift($args):''; } if(empty($type)) $type = C('DEFAULT_AJAX_RETURN'); if(strtoupper($type)=='JSON') { // 返回JSON数据格式到客户端 包含状态信息 header('Content-Type:text/html; charset=utf-8'); exit(json_encode($data)); }elseif(strtoupper($type)=='XML'){ // 返回xml格式数据 header('Content-Type:text/xml; charset=utf-8'); exit(xml_encode($data)); }elseif(strtoupper($type)=='EVAL'){ // 返回可执行的js脚本 header('Content-Type:text/html; charset=utf-8'); exit($data); }else{ // TODO 增加其它格式 } }
この記事が、ThinkPHP フレームワークに基づく皆様の PHP プログラム設計に役立つことを願っています。
thinkphp の AJAX return ajaxReturn() メソッドの分析に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。