之前传json的时候,用到的都是ajax,所以有些知识盲点就这么容易的避过了。最近项目中需要用到表单传一个json对象,踩了一个小坑,怪只怪在自己看书的时候太不仔细,下边来做个总结。

demo1.html:

 1 <body>
 2     <form action="eg.php" method="post" name="fom">
 3         <input type="text" name="txt" />
 4         <input type="submit" />
 5     </form>
 6     <script src="jquery-1.11.3.min.js"></script>
 7     <script type="text/javascript">
 8     
 9           //创建json对象     
10         var person = {
11             "name": "huyawei",
12             "sex" : "male"
13         }
14         $("[type=submit]").click(function(){
15         //将文本框的值设为这个json对象
16             $("[type=text]").val(person);
17         });
18         
19     </script>
20 </body>

 

建一个php文件来接收传过去的值 

<?php
    var_dump(json_decode($_POST['txt'])->name);
?>

提交表单

我们会看到这样一个结果 null;

仔细查了下,前台传json和数组到后台时,需要转化为json字符串形式,所以,我们只需要把上面的html文件的第16行改为:

$("[type=text]").val(JSON.stringify(person))

通过json对象的stringify函数,将json对象转化为字符串形式,这样就ok了,再来看下浏览器中的结果

因为之前遇到json一般都是用的ajax,而ajax会自动把你的值转化为字符串格式传过去,所以就不需要在自己去转化了。

有什么自己理解不到位的地方,还望大家指出,谢谢。

 

  

posted on 2016-01-17 19:43  ~叶子  阅读(735)  评论(0编辑  收藏  举报