搜索
首页php教程php手册用Json实现PHP与JavaScript间数据交换

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。

简而论之,不管是xml还是json都是为了方便在客户端与服务器端交互数据的中转站,特别是用于对象型数据,比如最常见的数组。

下面将分别将数组从php传送给javascript,以及将数组从javascript传送给php示例说明,例子比较简单,明白概念即可。不管从php传送给javascript,还是javascript传送给php,json在传送之前都会将对象扁平化即一维化为字符串。

PHP 向 JavaScript 传值

PHP 文件 json.php

<?php
	$arr = array(
		'name' => '希亚',
		'nick' => 'Gonn',
		'contact' => array(
			'email' => 'gonnsai@163.com',
			'website' => 'http://www.bkjia.com',
		)
	);
	$json_string = json_encode($arr);
	echo "getProfile($json_string)";
?>

光执行这个文件,其结果如下:

getProfile({"name":"u5e0cu4e9a","nick":"Gonn",
	"contact":{"email":"gonnsai@163.com","website":"http://www.bkjia.com"}})

json.php 是通过 json_encode 函数将数组扁平化,然后发送,相反有个 json_decode 函数。

那么在 JavaScript 如何调用呢?很简单,定义一个变量获取 PHP 传来的 Json,该 Json 具备对象的特性,我们可以用 array.name 这种方式来获取该 Json 的属性。

<script type="text/javascript"> 
function getProfile(str) {  
    var arr = str;  
	document.getElementById('name').innerHTML = arr.name;  
    document.getElementById('nick').innerHTML = arr.nick;  
	document.getElementById('email').innerHTML = arr.contact.email; 
	document.getElementById('website').innerHTML = arr.contact.website; 
}  
</script> 
<body>
<div id="name"></div>
<div id="nick"></div>
<div id="email"></div>
<div id="website"></div>
</body> 
<script type="text/javascript" src="json.php"></script> 

运行结果如下:

希亚
Gonn
gonnsai@163.com
http://www.bkjia.com

JavaScript 向 PHP 传值

json_encode.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>json:From javascript To php</title>
<script src="json2.js" type="text/javascript"></script>
<script type="text/javascript">
function JSON_test(o)
{
	var user = {
		name:document.getElementById('txt_name').value,
		email:document.getElementById('txt_email').value,
		password:document.getElementById('txt_password').value
	}
	var json_string = JSON.stringify(user);
	document.getElementById('txt_json').value=json_string;
	alert("点击确定后将提交表单");
	o.submit();
}
</script>
</head>
 
<body>
 
	<form id="form1" name="form1" method="post" action="json_encode.php" onsubmit="JSON_test(this);return flase;">
		<label for="txt_name">姓名</label>
		<p><input type="text" name="txt_name" id="txt_name" /></p>
		<label for="txt_email">邮箱</label>
		<p><input type="text" name="txt_email" id="txt_email" /></p>
		<p><label for="txt_password">密码</label></p>
		<p><input type="text" name="txt_password" id="txt_password" /></p>
		<p><input type="text" name="txt_json" id="txt_json" />
			<label for="button"></label>
			<input type="submit" name="button" id="button" value="JSON" />
		</p>
	</form>
 
</body>
</html>

这里javascript扁平化需要一个插件:http://www.json.org/json2.js,通过JSON.stringify(str)将对象扁平化然后传送给php。

注:另有一个http://www.json.org/json.js,对应的是toJSONString方法。

var last=obj.toJSONString(); //针对json.js
var last=JSON.stringify(obj); //针对json2.js

json_encode.php

<?php
	header('Content-Type: text/html; charset=utf-8');
	$json_string = $_POST["txt_json"];
	//echo $json_string;
	if(ini_get("magic_quotes_gpc")=="1")
	{
		$json_string=stripslashes($json_string);
	}
	$user = json_decode($json_string);
 
	echo var_dump($user);
 
	echo '<br /><br /><br /><br />';
	echo $user->name.'<br />';
	echo $user->email.'<br />';
	echo $user->password.'<br />';
?>

这里就需要用到json_decode()这个函数,然后调用其中数据用 $obj->属性即可。

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。