本文實例講述了ThinkPHP中使用ajax的方法,提交表單如下圖所示:

點擊提交,不需要刷新本頁,將內容提交到數據庫當中,並在本頁顯示提交的內容。如下圖所示:

一、jquery實現方法:
MessageAction.class.php頁面代碼如下:
<?php
class MessageAction extends Action{
function index(){
$this->display();
}
function add(){
//ajaxReturn(數據,'提示信息',狀態)
$m=M('message');
if($m->add($_GET)){
$this->ajaxReturn($_GET,'添加信息成功',1);
}else{
$this->ajaxReturn(0,'添加信息失敗',0);
}
}
}
?>
模板index.html代碼如下:
<html>
<head>
<script type="text/javascript" src="__PUBLIC__/js/jquery-1.7.1.min.js"></script>
<script type="text/javascript">
$(function(){
$('input:button').click(function(){
var $title=$('input[name="title"]').val();
var $message=$('input[name="message"]').val();
$mess=$('#mess');
$.getJSON('__URL__/add',{title:$title,message:$message},function(json){
//alert(json);return false;
if(json.status==1){
$mess.slideDown(3000,function(){
$mess.css('display','block');
}).html('標題為'+json.data.title+'信息為'+json.data.message);
}else{
$mess.slideDown(3000,function(){
$mess.css('display','block');
}).html('信息添加失敗,請檢查');
}
});
})
})
</script>
</head>
<body>
<div id="mess"></div>
<form action="" method="get">
標題:<input type="text" name="title" /><br />
信息:<input type="text" name="message" /><br />
<input type="button" value="提交" />
</form>
</body>
</html>
二、ThinkPHP實現方法:
MessageAction.class.php頁面代碼如下:
<?php
class MessageAction extends Action{
function index(){
$this->display();
}
function addtwo(){
$m=M('message');
if($vo=$m->create()){
if($m->add()){
$this->ajaxReturn($vo,'添加成功',1);
}else{
$this->ajaxReturn(0,'添加失敗',0);
}
}else{
$this->error($m->getError());
}
}
}
?>
模板index.html代碼如下:
<html>
<head>
<script type="text/javascript" src="__PUBLIC__/Js/Base.js"></script>
<script type="text/javascript" src="__PUBLIC__/Js/prototype.js"></script>
<script type="text/javascript" src="__PUBLIC__/Js/mootools.js"></script>
<script type="text/javascript" src="__PUBLIC__/Js/ThinkAjax.js"></script>
<script type="text/javascript">
function add(){
//ThinkAjax.sendForm(表單ID,URL,回調函數,信息顯示的地方);
ThinkAjax.sendForm('frm','__URL__/addtwo',wc);
}
function wc(data,status){
if(status!=1){
alert('發送失敗');
}else{
$('list').innerHTML+='標題'+data.title+',信息'+data.message;
}
}
</script>
</head>
<body>
<div id="list"></div>
<form action="" method="POST" id="frm">
標題:<input type="text" name="title" /><br />
信息:<input type="text" name="message" /><br />
<input type="button" value="提交" onClick="add()" />
</form>
</body>
</html>
感興趣的朋友可以測試運行一下本文所示實例,可以加深對Ajax應用的理解。
thinkphp自帶有ajax方法,很簡單的使用,方便的交互。舉一個例子你就明白啦。
先包含所需要的js(他的官網裡有下載),路徑自己修改。
<script src="__PUBLIC__/Js/Base.js" language="javascript" type="text/javascript"></script>
<script src="__PUBLIC__/Js/prototype.js" language="javascript" type="text/javascript"></script>
<script src="__PUBLIC__/Js/mootools.js" language="javascript" type="text/javascript"></script>
<script src="__PUBLIC__/Js/Ajax/ThinkAjax.js" language="javascript" type="text/javascript"></script>
然後例如是一個普通的無刷新驗證用戶名重復不重復的例子:
//先安放一個信息提示的位置:
<div id="result" class="none result" style="font-family:微軟雅黑,Tahoma;letter-spacing:2px"></div>
//然後是輸入框,點擊判斷用戶名是否己存在
<input name="username" type="text" /><span style="float:left; padding-left:5px;"><input type="button" onclick="checkUser();" value="" /></span>
//然後是這個checkUser()的JS
function checkUser(){
ThinkAjax.send('/User/chkUser','ajax=1&username='+$('username').value,'','result');
}
//第一個參數是提交處理的程序頁,第二個是傳遞的參數值,第三個是成功返回後返回的函數(這裡為空),第四個是值返回到哪個位置(就是之前設置的id="result" )
最後就剩下個程序處理頁 /User/chkUser
class UserAction exte......余下全文>>
你那個回調函數裡的 參數寫錯
這樣寫
alert(dd.data);
你沒了解 ajaxReturn返回的數據格式
你可以直接通過 浏覽器訪問 is_user 就可以看到