簡體   English   中英

如何在JQuery中序列化JSON對象

[英]How to serialize a JSON object in JQuery

我無法序列化JSON對象“數據”,如下所示。

<script type="text/javascript">

var myObj = {'first_name':{'answers':{'0':'John'}}};
var postdata = {'data':myObj};
$.post("get_note.php", postdata, function(data){
    $('#note').text(data);
});

</script>

以下是文件get_note.php中的代碼:

<?php

print_r($_POST['data']);
?>

這導致將以下內容打印到#note元素。

Array ( [first_name] => ) 

該數組似乎為空。 我期待PHP文件中有一個多維數組。 為什么它是空的?

在客戶端上,您可以通過對純JavaScript執行JSON.stringify()進行序列化。 在服務器上,您需要在字符串上執行php json_decode()

因此在客戶端上:

var postdata = {'data':JSON.stringify(myObj)};

在服務器上:

$myObj = json_decode(htmlspecialchars_decode($_POST['data']),true);

參考文獻:

js JSON.stringify(): http//www.json.org/js.html

php json_decode(): http ://php.net/manual/en/function.json-decode.php

您可以嘗試發送序列化的JSON數組並在服務器端將其解密。

要序列化JSON數組,請使用以下命令:

var my_json_array = { index: 11 };
JSON.stringify(my_json_array);

然后在服務器端,您可以將其轉換(解碼)為PHP數組,如下所示:

$json = $_POST["my_json_array"];
$my_array = json_decode($json);

因此,您的代碼將顯示以下內容:

<script type="text/javascript">

var data = {'first_name':{'answers':{'0':'John'}}};
var postdata = {'data':JSON.stringify(data)};
$.post("get_note.php", postdata, function(data){
    $('#note').text(data);
});

</script>

<?php

print_r(json_decode($_POST['data']));
?>

怎么說呢,該解決方案對於新的瀏覽器(具有本機JSON支持)適用於較舊的瀏覽器,但該解決方案將無法使用。

有關瀏覽器中JSON支持的更多信息,您可以在這里閱讀:

http://en.wikipedia.org/wiki/JSON#Native_encoding_and_decoding_in_browsers

暫無
暫無

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

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