1. 程式人生 > >TP框架調用ajax 以及分頁的引用

TP框架調用ajax 以及分頁的引用

stat 之前 str 讀取 text 指向 spa 空間 ati

thinkphp使用ajax和之前使用ajax的方法一樣,不同點在於之前的ajax中的url指向了一個頁面,而thinkphp裏面的url需要指向一個操作方法。

一、thinkphp使用ajax返回數據

1.先在Admin\Controller\MainController.class.php裏面寫一個方法 

public function testajax()//ajax測試方法
    {
        $this->show();
    }

2.在Admin\View\Main文件夾裏面建對應的顯示頁面testajax.html

技術分享 技術分享
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="__PUBLIC__/js/jquery-1.11.2.min.js"></script><!--jquery文件放在public/js裏面。__PUBLIC__找到public目錄-->
<title>無標題文檔</title>
</head>
<body>
    <select id="nation"></select>
</body>
<script type="text/javascript">
        $.ajax({
            url:"__CONTROLLER__/ajaxchuli",//這裏指向的就不再是頁面了,而是一個方法。
            data:{},
            type:"POST",
            dataType:"JSON",
            success: function(data){
                //alert(data[0].code);//這裏要用索引,使用eq讀取不出來數據。
var str=""; for(a in data) { str = str+"<option value=‘"+data[a].code+"‘>"+data[a].name+"</option>"; } $("#nation").html(str); } }) </script>
技術分享 技術分享

3.在Admin\Controller\MainController.class.php裏面寫ajax處理的方法

技術分享 技術分享
public function ajaxchuli()
    {
        $n = D("Nation");//造一個nation表的模型對象
        $attr = $n->select();
        
        $this->ajaxReturn($attr);//ajax返回數據的方式,用ajaxReturn,默認返回json數據。
    }
技術分享 技術分享

4.這樣就把數據顯示在了頁面

技術分享

二、ajax返回數據類型的修改

在thinkphp中ajax默認的是返回JSON數據,可以通過配置DEFAULT_AJAX_RETURN進行設置,設置方式如下

  1. // 指定XML格式返回數據
  2. $data[‘status‘] = 1;
  3. $data[‘content‘] = ‘content‘;
  4. $this->ajaxReturn($data,‘xml‘);

如果是XML方式,會自動編碼成XML字符串,如果是EVAL方式的話,只會輸出字符串data數據。

示例:

public function ajaxchuli()
{
$this->ajaxReturn("hello","eval");//將返回數據的類型更改成字符串
}

同時也要講ajax裏面的數據類型改為TEXT

技術分享 技術分享
<script type="text/javascript">
        $.ajax({
            url:"__CONTROLLER__/ajaxchuli",//這裏指向的就不再是頁面了,而是一個方法。
            data:{},
            type:"POST",
            dataType:"TEXT",
            success: function(data){
                alert(data);//輸出結果就是hello
            }
        })
</script>
技術分享 技術分享

三、用ajax和create(自動收集表單)向數據庫中添加數據

1.先寫訪問的方法

public function addajax()
    {
        $this->show();
    }

2.寫訪問的頁面

技術分享 技術分享
<body>
<div>代號:<input type="tel" id="code" /></div>
<div>名稱:<input type="tel" id="name" /></div>
<div><input type="button" id="btn" value="添加" /></div>
</body>
<script type="text/javascript">

$("#btn").click(function(){
        var code = $("#code").val();
        var name = $("#name").val();
        $.ajax({
                url:"__CONTROLLER__/addchuli",
                data:{Code:code,Name:name},//要用create方法,這裏的列名就要和數據庫中的列名一樣,這裏的首字母要大寫。
                type:"POST",
                dataType:"TEXT",
                success: function(data){
                    alert(data);
                }
            })
    })
</script>
技術分享 技術分享

3.寫ajax處理的方法

技術分享 技術分享
public function addchuli()
    {
        $n = D("Nation");
        $n->create();//自動收集表單
        $r = $n->add();//調用添加的方法
        if($r)
        {
            $this->ajaxReturn("OK","eval");//如果添加成功輸出“OK”,eval代表數據類型為字符串。
        }
        else
        {
            $this->ajaxReturn("NO","eval");//如果添加失敗,就輸出”NO“。
        }
    }
技術分享 技術分享

四、thinkphp中用ajax做分頁。主要註意第三方類怎麽引用。

1.先做一個方法xianshi();

技術分享 技術分享
public function xianshi()
    {
        $n = D("chinastates");//造chinastates表的對象(自己的省市表)
        $shuliang = $n->count();//取出數據的總條數
        $page = new \Home\libs\Page($shuliang,15);//將page文件類引入。()裏面需要參數,第一個參數是數據的總數量,第二個是每頁顯示多少條數據。所以上面要先求出數量。
        
        $xinxi = $page->fpage();        
        
        $attr = $n->limit($page->limit)->select();//查詢出所有數據,limit(0,15),需要修改Page.class.php文件中的第57行$this->limit = "LIMIT ".$this->setLimit();,將 "LIMIT ".去掉,如果不去掉的話,將會顯示limit(limit(0,15)),度了1個limit。
        $this->assign("shuju",$attr);//將查詢出的數據都註入顯示頁面
        $this->assign("xinxi",$xinxi);
        $this->show();//調用顯示方法在顯示頁面顯示。
    }
技術分享 技術分享

2.做顯示頁面

技術分享 技術分享
<body>
<table width="100%" border="1" cellpadding="0" cellspacing="0">
    <tr>
        <td>代號</td>
        <td>名稱</td>
        <td>父級代號</td>
    </tr>
    <foreach name="shuju" item="v" >
     <tr>
        <td>{$v.areacode}</td>
        <td>{$v.areaname}</td>
        <td>{$v.parentareacode}</td>
    </tr>
    </foreach>
</table>
<div>{$xinxi}</div><!--顯示分頁信息-->
</body>
技術分享 技術分享

3.Page.class.php需要更改的地方

(1)文件名原來為page.class.php需要改為Page.class.php,要和類名保持一致;

(2)把Page.class.php復制到thinkphp\Application\Home\libs裏面;

(3)namespace Home\libs;加上命名空間。

(4)修改Page.class.php文件中的第57行$this->limit = "LIMIT ".$this->setLimit();,將 "LIMIT ".去掉;

TP框架調用ajax 以及分頁的引用