ThinkPHP 和 Ajax 之间的交互
最近正在学习PHP,在学习过程中遇到一些问题,其中的一个问题就是ThinkPHP 和 Ajax之间的数据交换。
ajax主要功能在于:通过在后台与服务器进行少量数据交换,AJAX可以使网页实现异步更新。也就是在页面无刷新的情况下实现数据或者表单的提交。
1. AJAX的基本使用
使用GET方法:
$.ajax({ type:"GET", url:"__URL__/deleteUser", data:{id:ids}, dataType: "json", success:function(ss){ alert(ss); } });
使用POST方法:
// FormData() 是传递的数据
var form = new FormData(); form.append("id",id);
$.ajax({ type:"POST", url:"__URL__/deleteUser", data:form, processData: false, // 不处理数据 contentType: false, success:function(ss){ alert(ss); // window.history.go(-1); }, error:function(){ alert("错误"); } });
参数解析:
type:表示请求的方式,post或get,默认为get。
url:数据所要提交到的url地址。
data:表示所要提交的数据。JSON格式(键值对)。代码中第一个id表示变量名,第二个ids表示具体的值,即第一个id变量所对应的值。
dataType:预期服务器返回的数据类型。若不指定,jquery将自动根据http包MIME信息来智能判断(w3c抄袭,具体不懂,大概是根据MIME的类型来返回值的类型)
success:请求成功后后调用的回调函数。
ajax请求数据还有很多参数,比如beforeSend、error等,大家若想详细了解可以上网去查。
有了这段代码,用户在执行点击等操作时就可以将数据以get的方式提交到后台。
function deleteUser(){ if(IS_GET) { $id=$_GET["id"]; $this->ajaxReturn($id); }
//if(IS_POST) //{ // $id=$_POST["id"]; // $this->ajaxReturn($id); //}}
thinkPHP中具有对请求类型进行判断的封装,其中具有对几种请求类型的判断:
IS_POST:判断是否是POST方式提交
IS_GET:判断是否是GET方式提交
IS_AJAX:判断是否是ajax方式提交
在后台接收数据时,首先同样进行了请求的判断。然后通过$id=$_GET["id"]得到页面提交过来的数据,然后进行数据返回。
ThinkPHP对ajax有很好的支持,系统\Think\Controller类中提供了ajaxReturn方法用于对ajax调用后返回数据给客户端,支持JSON,JSONP,XML和EVAL四种方式返回数据的类型。默认采用JSON格式返回数据。