簡體   English   中英

Json_encode for .post?

[英]Json_encode for .post?

任何人都可以在執行.post查詢時解釋json_encode的用途。

這是我經常在其他編碼中看到的。

.post php腳本

    ...
    ...

    echo json_encode($a);

我的意思是,如果我想從.post腳本返回並通過.post返回一個數組。 我不是只需要做以下事情嗎?

.post php腳本

    ...
    ...
    $a = array("foo", "bar", "hallo", "world");
    $string=implode(',',$a) in my php script        

    return $string;

JavaScript的

    $.post('$url',function(data){
        data_arr=data.split(',');
        //After which just get the values in the array
        alert(data_arr[0]); //ALERTS 'foo'
        alert(data_arr[1]); //ALERTS 'bar'
    });

如果有人可以通過清除這個來幫助我,並讓我看到在這個目的中使用json的亮點,這將是偉大的。

也許這也是由於我對JSON的不了解。

非常感謝如果有人可以告訴我為什么在這種情況下使用JSON編碼更好,我想如何通過.post請求使用它而不是只是回顯字符串並稍后拆分它。

謝謝。

使用json_encode可確保您的數據始終有效。

對於您可以控制的簡單數據並不重要,但想象一下如果有一天你在其中一個值中有逗號。 使用JSON編碼的字符串,您不必擔心任意分隔符令牌。

此外,使用JSON,您可以輕松編碼對象/陣列,而無需重新發明輪子。

首先,在我看來和實踐中,JSON語法與Javascript對象非常相似,在處理更復雜的數據類型時非常有用,這些數據類型必須在以后發送/請求和解析。

例如:如果您正在執行發布請求並且您正在序列化您驗證服務器端的所有表單字段(使用PHP),則您很可能需要使用key => value對,例如textbox_name => value 這樣做更合乎邏輯,而不是通過數字索引選擇值(如果表單布局改變了怎么辦?)

使用逗號的示例代碼:

<?php
$array = array('Tom', 'Hanks', 'Football');
$string = join(',',$array);
echo $string; //it's obvious - the output is Tom,Hanks,Football
?>

接收字符串的javascript

$.post(url,{},function(data){
   var values = data.split(',')
   $("#name").text(values[0]);
   $("#surname").text(values[1]);
   $("#interests").text(values[2]);
});

這有道理嗎? 但是這樣做更有意義:

<?php
header('Content-type: application/json');
$array = array('name' => 'Tom', 'surname' => 'Hanks', 'interests' => 'Football');
echo json_encode($array);
?>

和javascript:

$.post(url,{},function(data){
   for(index in data) {
      $("#"+index).text(data[index]);
   }
   //or
   $("#name").text(data.name);
   $("#surname").text(data.surname);
   $("#interests").text(data.interests);
});

使用Javascript解析響應數據也是如此。 擁有一個對象比擁有一個CSV字符串更合乎邏輯。

顯然它取決於用例 ,但一般來說,JSON為您提供了字符串化對象/數組的邏輯結構,可以將其轉換回對象和數組,並以任何方式循環或操作。

JSON現在也是一個標准。 每個人都使用它,這意味着它不是沒有理由的。 換句話說 - JSON數據更有意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM