PHP 向 JavaScript 传值
PHP 文件 json.php
06 | 'email' => 'gonnsai@163.com' , |
10 | $json_string = json_encode( $arr ); |
11 | echo "getProfile($json_string)" ; |
光执行这个文件,其结果如下:
1 | getProfile({ "name" : "\u5e0c\u4e9a" , "nick" : "Gonn" , |
2 | "contact" :{ "email" : "gonnsai@163.com" , "website" : "http:\/\/www.nowamagic.net" }}) |
json.php 是通过 json_encode 函数将数组扁平化,然后发送,相反有个 json_decode 函数。
那么在 JavaScript 如何调用呢?很简单,定义一个变量获取 PHP 传来的 Json,该 Json 具备对象的特性,我们可以用 array.name 这种方式来获取该 Json 的属性。
01 | < script type = "text/javascript" > |
02 | function getProfile(str) { |
04 | document.getElementById('name').innerHTML = arr.name; |
05 | document.getElementById('nick').innerHTML = arr.nick; |
06 | document.getElementById('email').innerHTML = arr.contact.email; |
07 | document.getElementById('website').innerHTML = arr.contact.website; |
13 | < div id = "email" ></ div > |
14 | < div id = "website" ></ div > |
16 | < script type = "text/javascript" src = "json.php" ></ script > |
运行结果如下:
JavaScript 向 PHP 传值
json_encode.html
04 | < meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" /> |
05 | < title >json:From javascript To php</ title > |
06 | < script src = "json2.js" type = "text/javascript" ></ script > |
07 | < script type = "text/javascript" > |
11 | name:document.getElementById('txt_name').value, |
12 | email:document.getElementById('txt_email').value, |
13 | password:document.getElementById('txt_password').value |
15 | var json_string = JSON.stringify(user); |
16 | document.getElementById('txt_json').value=json_string; |
25 | < form id = "form1" name = "form1" method = "post" action = "json_encode.php" onsubmit = "JSON_test(this);return flase;" > |
26 | < label for = "txt_name" >姓名</ label > |
27 | < p >< input type = "text" name = "txt_name" id = "txt_name" /></ p > |
28 | < label for = "txt_email" >邮箱</ label > |
29 | < p >< input type = "text" name = "txt_email" id = "txt_email" /></ p > |
30 | < p >< label for = "txt_password" >密码</ label ></ p > |
31 | < p >< input type = "text" name = "txt_password" id = "txt_password" /></ p > |
32 | < p >< input type = "text" name = "txt_json" id = "txt_json" /> |
33 | < label for = "button" ></ label > |
34 | < input type = "submit" name = "button" id = "button" value = "JSON" /> |
这里javascript扁平化需要一个插件:http://www.json.org/json2.js,通过JSON.stringify(str)将对象扁平化然后传送给php。
注:另有一个http://www.json.org/json.js,对应的是toJSONString方法。
1 | var last=obj.toJSONString(); |
2 | var last=JSON.stringify(obj); |
json_encode.php
02 | header( 'Content-Type: text/html; charset=utf-8' ); |
03 | $json_string = $_POST [ "txt_json" ]; |
05 | if ( ini_get ( "magic_quotes_gpc" )== "1" ) |
07 | $json_string = stripslashes ( $json_string ); |
09 | $user = json_decode( $json_string ); |
13 | echo '<br /><br /><br /><br />' ; |
14 | echo $user ->name. '<br />' ; |
15 | echo $user ->email. '<br />' ; |
16 | echo $user ->password. '<br />' ; |
这里就需要用到json_decode()这个函数,然后调用其中数据用 $obj->属性即可。