請問您可以告訴我,JSON(Javascript和PHP)有什麼用處。當我們需要一個JSON方法時,我們需要 。何時/何時使用JSON?
我從以下鏈接閱讀,但我沒有得到有關任何項目的JSON執行任何信息。
請問您可以告訴我,JSON(Javascript和PHP)有什麼用處。當我們需要一個JSON方法時,我們需要 。何時/何時使用JSON?
我從以下鏈接閱讀,但我沒有得到有關任何項目的JSON執行任何信息。
JSON是一種重量輕的數據交換格式(把它看作節食XML)。基本上任何可以使用XML來序列化數據的地方都可以使用JSON。
JSON只是一種數據格式。如果您需要存儲或傳輸不比嵌套的名稱/值對系列更復雜的數據,而JSON標準支持其值,那麼JSON可能是您的項目的正確數據格式。
如果你的項目有數據存儲/傳輸需求;)
儘管它的名字,JSON格式的主要用途之一是在AJAX Web開發(但肯定不是唯一的一個)。它的輕量級語法通常比傳統的XML更受歡迎。
JSON是相對輕質的數據交換格式(當相比XML或HTML至少)和交換少量web客戶端和web服務器/服務之間的數據時是最有用的。
然而,這是不是最好的選擇(雖然比XML更好)用於交換數據的大名單,由於每行的開銷交換。
JSON是在數據的傳輸中使用的數據格式。它主要用於Javascript AJAX調用。
JSON的結構簡單的括號名稱:值對。由於它的緊湊性和簡單性,對於傳輸相對較小的數據集和可以分組爲名稱:值對的東西來說,它是一個更好的結構。
例如:
prototype.js是一個Ajax調用轉換和接收JSON數據:
my_prototype_class = Class.create();
my_prototype_class.prototype = {
initialize: function() {
this.myarray = new Array();
//do initialization
},
my_function: function(direction){
new Ajax.Request('/my/url.php',
{
method: 'post',
parameters: { name: value,
myarray_data: this.myarray.toJSON() },
onSuccess: function(transport) {
var response = transport.responseText.evalJSON();
//handle response
},
onFailure: function(){
//handle failure
}
});
}
}
Event.observe(window, "load", function(){new my_prototype_class();}, false);
而且使用PHP你處理的是這樣的要求:
function my_php_handler()
{
#parse POST data
$name = $_POST["name"];
$myarray_data = $_POST["myarray_data"];
#transform the data in some way
#return encoded string
echo json_encode($results);
}
喜歡的東西:
[{"myarray": [], "name": value}]
將在http請求/響應中傳遞。這個格式的數據被稱爲JSON。
JSON主要用作AJAX網絡應用程序中輕量且更人性化的XML替代品。
如果您需要使用JavaScript代碼處理檢索到的數據(即通過瀏覽器中的Ajax調用),我會建議使用JSON。在這種情況下,JSON非常舒適,因爲您可以直接將其加載到JavaScript中並使用它(因此Java Script Object Notation => JSON)。這稱爲JavaScript對象中的JSON字符串的反序列化。這可以通過使用eval()來完成,但是 - 我讀 - 帶來了一些安全問題,因此應該使用一些JSON(de)序列化器。
正如你提到你有一些JSON字符串如
{"bindings": [
{"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
{"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
{"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
]
}
這是通過網絡發送,通過一些Ajax調用的地方再調用回調函數,如客戶端發起的page描述(即.Net)
function onSuccess(result){
var myObj = Sys.Serialization.JavaScriptSerializer.deserialize(result, false);
myObj.bindings[0].ircEvent...
}
當使用JavaScript時,優勢就是簡單(de)序列化,主要是使用Ajax進行web開發。否則,我不會真的使用JSON,而是依賴於XML,因爲對於桌面應用程序來說,真的有強大的解析庫。
所有其他答案都很好,但對您的特定情況(JavaScript + PHP)可能是最簡單的解釋:JSON是將JavaScript對象轉換爲PHP關聯數組或對象的最簡單方法(反之亦然)。
看看json_encode()和json_decode()爲PHP方面的東西。在JavaScript方面,簡單的eval()是從JSON字符串中獲取對象的最簡單(但最不安全!)的方式,但您選擇的庫肯定會有功能爲您處理此問題,並且如果你的目標是新的瀏覽器,你可以使用ECMAScript 5 JSON object。
JSON是一種用於在Javascript和PHP之間傳遞數據的優秀格式。我最常用的用途是狀態消息。
下面是一些用於對小PHP腳本進行Ajax查詢的Javascript。
new Ajax.Request('dostuff.php', {
method: 'get',
parameters: {'param1': 'this is param 1'},
onSuccess: function(response, jsonHeader){
if(jsonHeader['status'] == 'Success'){
//Everything is OK, do stuff
}else{
alert(jsonHeader['status']);
}
},
onFailure: function(){
alert('Fail!');
}
});
然後,在PHP端,你可以有這樣的事情:
$jsonHeader = array();
if($_REQUEST['param1'])
{
echo '<p>You passed ' . $_REQUEST['param1'] . '</p>';
$jsonHeader['status'] = 'Success';
}else
{
$jsonHeader['status'] = 'Failed because the request was invalid';
}
if(is_array($jsonHeader) and sizeof($jsonHeader) > 0)
{
header('X-JSON: (' . json_encode($jsonHeader) . ')');
}
整潔的事情是,原型自動解碼的X-JSON頭PHP是創造。
最終的結果是,在Javascript中的onSuccess方法的jsonHeader參數自動轉換成一個數組,是相同的數據在PHP中的$ jsonHeader陣列
應該是社會的維基 – SilentGhost 2009-07-21 20:19:16