Ajax 如何通過url 傳遞Json 數據或者數組 給PHP進行處理

/**
  * @author kaizhu_Qin
  * @copyright http://blog.csdn.net/kaizhu_qin
  * @version 2013-12-23
  * @latest update 2013-12-23
  */
首先,我們應該明白,url是不能直接傳遞數組類型的數據的。
例如:我們想通過url傳遞一個包含了用戶名和密碼的數據給login.php進行出來

var a=new Array(); 
a['name']="admin"; 
a['password']="admin";
var data='userinfo='+a;
$.ajax({ 
	type:"POST", 
	url:"login.php", 
	data:data, 
	success:function(data){ 
		console.log(data); }
	});

這樣通過url傳數組是不成功的。

目前,JSON已經成爲最流行的數據交換格式之一,我們可以嘗試通過JSON 來完成:

下面我們先來了解下JSON:

從5.2版本開始,PHP原生提供json_encode()json_decode()函數,前者用於編碼,後者用於解碼。

一、json_encode()

該函數主要用來將數組和對象,轉換爲json格式。先看一個數組轉換的例子:

$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr);
//結果爲:
//{"a":1,"b":2,"c":3,"d":4,"e":5}

二、json_decode()
該函數用於將json文本轉換爲相應的PHP數據結構。下面是一個例子:
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5};
var_dump(json_decode($json));
結果就是生成一個PHP對象:
object(stdClass)#1 (5) {

  ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)

}

如果想要強制生成PHP關聯數組,json_decode()需要加一個參數true:

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json,true));

結果就生成了一個關聯數組:

  array(5) {

   ["a"] => int(1)
     ["b"] => int(2)
     ["c"] => int(3)
     ["d"] => int(4)
     ["e"] => int(5)

  }

/***************************************************華麗的分割線****************************************************************/

同樣的道理,我們反過來應用下:
我們在js裏將需要傳遞的數組進行處理,寫爲下面的形式:

需要傳遞的數組:

var a = new Array(); 
a['name']="333"; 
a['password']="54dfdgf";
//JSON數據形式:
var a='{"username":admin,"password":admin}';
var data='userinfo='+a;
$.ajax({ 
	type:"POST", 
	url:"login.php", 
	data:data, 
	success:function(data){ 
		console.log(data); 
	}
});

在login.php 文件:

$json=_POST['userinfo'];
print_r((json_decode($json,true)));
//結果:Array ([username] => admin [password] => admin)

這樣我們使用Ajax通過url傳遞的數組就可以在php獲得了。

當然,如果我們使用ajax的方式,傳遞form表單的數據,serialize() 能更加快速地序列化表單值。
serialize() 方法通過序列化表單值,創建 URL 編碼文本字符串。
關於serialize() 的具體用法,大家可以參考這裏:《jQuery ajax - serialize() 方法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章