AJAX中的dataType(數據格式)-text、json


因為經常使用數據格式,所以將它封裝成類,J這樣就不會用到時就寫了,直接調用寫好的類就可以了

(1)dataType數據格式為:TEXT格式的數據是字符串的數據,在“ajax對數據進行刪除和查看”的那篇博客中說過,這里在說下

結果不會每個傳輸的都是字符串,有時是二維數組,這樣就要轉換為字符串格式了

class DBDA
{
	public $host="localhost"; //數據庫連接
	public $uid="root";       //用戶
	public $password="123";   //用戶密碼
	public $dbname="test2";   //用到的數據庫名字

	//返回字符串的方法
	public function StrQuery($sql,$type=1)
	  {
		$db = new MySQLi($this->host,$this->uid,$this->password,$this->dbname);  //造一個新對象
		$r = $db->query($sql);  //sql語句
			
		if($type==1)  //判斷語句
		{
		  $attr = $r->fetch_all();
		  $str = "";
		  foreach($attr as $v)
		  {
		    $str .= implode("^",$v)."|";  //拼接數組為字符串
		  }	
		  return substr($str,0,strlen($str)-1);  //截取字符串:最后的拼接符不顯示
      	}
		else
		{
		  return $r;
		}
	}
}

這就把轉換字符串封裝成了一個類:運用一下

$.ajax({
	url:"xianshicl.php",	//處理頁面中進行查數據庫
	dataType:"TEXT",   //用的text的數據類型
	success: function(data){
	  //這里是處理頁面執行結束后在執行的語句
        }
})                     

處理頁面的查數據庫

<?php
	include("DBDA.class.php");  //調用封裝好的類文件
	$db = new DBDA();  //造新對象
	
	$sql = "select * from fruit"; //查數據庫的內容語句
	
	echo $db->StrQuery($sql);   //1.引用封裝好的類中的轉換字符串的方法
/* //2.不想調用,可以自己寫,不過就是麻煩點,因為這樣會每次用到時都要寫 $attr = $db->Query($sql); $str = ""; foreach($attr as $v) {   $str .= implode("^",$v)."|"; //拼接數組為字符串 } echo substr($str,0,strlen($str)-1); //截取字符串:最后的拼接符不顯示 */ ?>

這里是處理頁面執行語句的效果:

然后在ajax中進行拆分后就可以了:

success: function(data){
	var hang = data.split("|");  //拆分字符“|”串:顯示行
	var str = "";
	for(var i=0;i<hang.length;i++)
	{
		var lie = hang[i].split("^");  //拆分字符串“^”:顯示列
		str += "<tr><td>"+lie[0]+"</td><td>"+lie[1]+"</td><td>"+lie[2]+"</td><td>"+lie[3]+"</td><td>"+lie[4]+"</td></tr>"; //直接找索引號
	}
					
	$("#bg").html(str);
  }

 

(2)dataType數據格式為:JSON比較像關聯數組:所以在引用時,數組是要關聯數組的,不能是索引數組

我們也把這個封裝成一個類,既然是關聯數組,在遍歷時的函數值應該是fetch_all(MYSQLI_ASSOC)

class DBDA
{
	public $host="localhost"; //數據庫連接
	public $uid="root";       //用戶
	public $password="123";   //用戶密碼
	public $dbname="test2";   //用到的數據庫名字

	//返回JSON
	function JSONQuery($sql,$type=1)
	{
	  $db = new MySQLi($this->host,$this->uid,$this->password,$this->dbname);
	  $r = $db->query($sql);

        //和字符串不同的地方   if($type==1)   { //json是關聯數組:fetch_all(MYSQLI_ASSOC) return json_encode($r->fetch_all(MYSQLI_ASSOC)); //轉化成json:json_encode()必須是utf-8的服務   }   else   { return $r;   } } }

這就把json封裝成了一個類:運用一下 

$(document).ready(function(e) {
  $.ajax({
	url: "scl.php",  //處理頁面
	dataType:"json",  //數據類型是JSON
	success: function(data){
		//處理頁面結束后執行的語句寫這里			
	  }	
  })
});

處理頁面的語句:

<?php
include("DBDA.class.php");  //調用封裝的類
$db = new DBDA();

$sql = "select * from fruit";
echo $db->JSONQuery($sql);  //這里就是引用的封裝好的JSON方法

執行下,看下這個方法和TEXT的區別(這個就是個數組,還是個關聯的數組)

處理頁面執行成功后執行下面語句

var str = "";
for( var k in data)
{
  str +="<option value='"+data[k].Ids+"'>"+data[k].Name+"</option>";  //找到k的Code,這里的Code要和數據庫中的列名一致
}		
$("#fruit").html(str);		

下面就把整體的效果看下,上面做了個下拉列表,找的是數據庫中水果表的名稱,如下:

 

TEXT是直接遍歷索引號,而JSON是列名

str += "<tr><td>"+lie[0]+"</td><td>"+lie[1]+"</td><td>"+lie[2]+"</td><td>"+lie[3]+"</td><td>"+lie[4]+"</td></tr>"; //直接找索引號
str +="<option value='"+data[k].Ids+"'>"+data[k].Name+"</option>";  //找到k的Code,這里的Code要和數據庫中的列名一致

需要注意,JSON是關聯數組,要用MYSQLI_ASSOC這個值,

轉換成JSON的方法是:json_encode()

使用這個方法服務必須是utf-8的服務

  

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM