导航:首页 > 编程语言 > phpjson交互

phpjson交互

发布时间:2022-07-10 05:15:49

1. php和js如何通过json互相传递数据相关问题探讨

当我们在结合php和javascript实现某些功能时,经常会用到json。json是js的一种数据格式,可以直接被js解析。
​而php无法直接读取json数据,但是php提供了json_decode函数来对json数据进行转化,从而可以被php脚本访问。同时,php也提供了json_encode函数来将数据转化成json格式。

2. PHP JSON格式数据交互实例代码详解

在PHP中解析JSON主要用到json_encode和json_decode两个PHP
JSON函数,比PHP解析XML方便很多,下面详细介绍下PHP
JSON的使用。
JSON基础介绍
JSON(JavaScript
Object
Notation)
是一种轻量级的数据交换格式。
JSON主要有两种结构:
“名称/值”对的集合,在PHP中可以理解为关联数组
(associative
array)。
值的有序列表(An
ordered
list
of
values)。在PHP中可以理解为普通数组(array)。
对象是一个无序的“‘名称/值'对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值'
对”之间使用“,”(逗号)分隔。
数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、
null、对象(object)或者数组(array)。这些结构可以嵌套。
我目前对JSON的理解更偏向于数组,类似于PHP中的关联数组,你可以将PHP数组转换为JSON格式。
更多JSON的介绍请参考JSON官网和IBM关于JSON的介绍
PHP
JSON解析实例
PHP5.2开始已经将JSON作为PHP扩展的一部分,所以并不需要另外安装JSON。另外为了保证下面的PHP
JSON实例不出现中文乱码,请保证你的编码格式为UTF8。
JSON是Javascript的一部分,首先我们看下Javascript中如何定义JSON
复制代码
代码如下:
var
json_obj
=
{'WebName':'PHP网站开发教程网'};
alert(json_obj.WebName);
var
json_arr
=[{'WebName':'PHP网站开发教程网','WebSite':'http://www.jb51.net'},{'ArtTitle':'PHP
JSON实例讲解'}]
alert(json_arr[1].ArtTitle);
var
php_json
=
[['PHP网站开发教程网','http://www.jb51.net'],['文章标题','PHP
JSON实例讲解']];
alert(php_json[1][0]);
在这段JSON实例代码中我构建了所有的JSON形式,
第1行,定义了JSON以对象形式存在
第4行,定义了JSON以数组形式存在,嵌套了JSON对象,所以有点类似于PHP的关联数组,其实仍然是对象。
第7行,定了JSON以普通数组形式存在。
注意:由于Javascript是区分大小写的,所以访问JSON关联数组对象时注意key的大小写问题。
PHP与JSON格式数据交互时,第一步需要将PHP数组转换为JSON格式的数据,可使用PHP5自带的json_encode函数,当PHP解析传递过来的JSON格式数据时需要使用json_decode函数进行解析转换为PHP数组,PHP转换并解析JSON数据的实例代码如下
复制代码
代码如下:
<?php
$json_arr
=
array('WebName'=>'PHP网站开发教程网','WebSite'=>'http://www.jb51.net');
$php_json
=
json_encode($json_arr);
echo
$php_json;
$php_json
=
json_decode($php_json);
print_r($php_json);
?>
说明:这里通过PHP定义了关联数组,然后通过json_encode转换为JSON格式的数据,通过echo语句可以看到转换后的JSON对象,通过PHP
JSON解析函数json_decode可以将JSON格式的数据解析为PHP的关联数组。如果编码不正确,JSON中文会出现乱码。如果你使用Editplus调试PHP,请注意保存文件时编码将ANSI改为UTF8。
最后我们来看下完整的PHP
JSON交互实例
复制代码
代码如下:
<?php
$json_arr
=
array('WebName'=>'PHP网站开发教程网','WebSite'=>'http://www.jb51.net');
$php_json
=
json_encode($json_arr);
?>
<script
type="text/javascript">
var
php_json
=
<?=$php_json?>;
</script>
<script
type="text/javascript">
function
php_json_dis(php_json)
{
alert(php_json.WebName);
alert(php_json.WebSite);
}
php_json_dis(php_json);
</script>
至此,PHP通过json_encode和json_decode函数对JSON格式数据进行转换和解析的实例就介绍完了。

3. php和安卓怎么实现数据(如json)交互

PHP是一种创建动态交互性站点的服务器端脚本语言,优势:PHP脚本语言应用广泛,开源免费,最重要的是入门简单,容易掌握。 PHP能够生成动态页面内容 PHP能够创建、打开、读取、写入、删除以及关闭服务器上的文件 PHP能够接收表单数据 PHP能够发送并取回cookies PHP能够添加、删除、修改数据库中的数据 PHP能够限制用户访问网站中的某些页面 能够运行于各种平台,几乎兼容所有WEB服务器,支持多种数据库 1.我们想要运行PHP,首先要有个web服务器,一般可以在本地部署一个服务器用来测试。所以需要下载个XAMPP,我们在网络搜索apache friends,直接打开第一个链接,然后毫不犹豫的下载最新版本(PHP7.0.9),下载后执行安装。 2. 2.现在来配置XAMPP来部署一个本地服务器,打开只需要启用Apache服务,下面我就启动成功了。如果启用不成功,Port(s)没有数据显示,就证明你监听的PC端口被占用,你可以在Config的里第一个选项进行监听端口的更改,找到记事本里的Listen 8080命令改后缀,这里我把监听端口改成空闲的8080了。 3.下面来打开Dreamweaver建一个服务器站点。站点配置:本地站点文件夹一定要选择你装Xampp路径的htdocs的目录里。 4.添加服务器配置: 这样站点就设置好了,然后在站点文件夹创建server.php,脚本如下 <?php //设置页面内容是html编码格式是utf-8 //header("Content-Type: text/plain;charset=utf-8"); header('Access-Control-Allow-Origin:*'); header('Access-Control-Allow-Methods:POST,GET'); header('Access-Control-Allow-Credentials:true'); header("Content-Type: application/json;charset=utf-8"); //header("Content-Type: text/xml;charset=utf-8"); //header("Content-Type: text/html;charset=utf-8"); //header("Content-Type: application/javascript;charset=utf-8"); //定义一个多维数组,包含员工的信息,每条员工信息为一个数组 $staff = array ( array("name" => "乔布斯", "number" => "101", "sex" => "男", "job" => "IOS开发工程师"), array("name" => "比尔盖茨", "number" => "102", "sex" => "男", "job" => "微软开发工程师"), array("name" => "陈美丽", "number" => "103", "sex" => "女", "job" => "安卓开发工程师"), array("name" => "黄力", "number" => "104", "sex" => "男", "job" => "Java开发工程师"), array("name" => "车神", "number" => "105", "sex" => "男", "job" => "游戏开发工程师"), array("name" => "测试猫", "number" => "106", "sex" => "男", "job" => "web前端开发工程师") ); //判断如果是get请求,则进行搜索;如果是POST请求,则进行新建 //$_SERVER是一个超全局变量,在一个脚本的全部作用域中都可用,不用使用global关键字 //$_SERVER["REQUEST_METHOD"]返回访问页面使用的请求方法 if ($_SERVER["REQUEST_METHOD"] == "GET") { search(); } elseif ($_SERVER["REQUEST_METHOD"] == "POST"){ create(); } //通过员工编号搜索员工 function search(){ //检查是否有员工编号的参数 //isset检测变量是否设置;empty判断值为否为空 //超全局变量 $_GET 和 $_POST 用于收集表单数据 if (!isset($_GET["number"]) empty($_GET["number"])) { echo '{"success":false,"msg":"参数错误"}'; return; } //函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问。 //global 关键词用于访问函数内的全局变量 global $staff; //获取number参数 $number = $_GET["number"]; $result = '{"success":false,"msg":"没有找到员工。"}'; //遍历$staff多维数组,查找key值为number的员工是否存在,如果存在,则修改返回结果 foreach ($staff as $value) { if ($value["number"] == $number) { $result = '{"success":true,"msg":"找到员工:员工编号:' . $value["number"] . ',员工姓名:' . $value["name"] . ',员工性别:' . $value["sex"] . ',员工职位:' . $value["job"] . '"}'; break; } } echo $result; } //创建员工 function create(){ //判断信息是否填写完全 if (!isset($_POST["name"]) empty($_POST["name"]) !isset($_POST["number"]) empty($_POST["number"]) !isset($_POST["sex"]) empty($_POST["sex"]) !isset($_POST["job"]) empty($_POST["job"])) { echo '{"success":false,"msg":"参数错误,员工信息填写不全"}'; return; } //TODO: 获取POST表单数据并保存到数据库 //提示保存成功 echo '{"success":true,"msg":"员工:' . $_POST["name"] . ' 信息保存成功!"}'; } ?> 我们可以在server.php文件数组$staff里的数据进行查询,并且可以实现添加数据的功能,下面来创建demo.html <style> body,input,button,select,h1{ font-size:20px; line-height:18px; } </style> <script> window.onload=function(){ document.getElementById("search").onclick=function(){//查询数据 //发送Ajax查询请求并处理 var request=new XMLHttpRequest(); //open("方法(GET查询,POST添加)","打开的文件数据",处理方式(同步为false异步为true,不填默认为true)); request.open("GET","server.php?number="+document.getElementById('keyword').value); request.send(); request.onreadystatechange=function(){ if(request.readyState===4){//当服务器请求完成 if(request.status===200){//status==200为服务器请求成功 var data=JSON.parse(request.responseText); if(data.success){//数据填写符合要求 document.getElementById('searchResult').innerHTML=data.msg; }else{//数据填写不符号要求 document.getElementById('searchResult').innerHTML="出现错误:"+data.msg; } }else{//服务器请求失败 alert("发生错误:"+request.status); } } } } document.getElementById("save").onclick=function(){//添加数据 //发送Ajax添加数据请求并处理 var request=new XMLHttpRequest(); //open("方法(GET查询,POST添加)","打开的文件数据",处理方式(同步为false异步为true,不填默认为true));; request.open("POST","server.php"); //定义data取得用户所填写的数据,并且send(data)到服务器 var data="name="+document.getElementById("staffName").value +"&number="+document.getElementById("staffNumber").value +"&sex="+document.getElementById("staffSex").value +"&job="+document.getElementById("staffJob").value; request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");//在POST方法里必写,否则添加数据不起作用 request.send(data); request.onreadystatechange=function(){ if(request.readyState===4){//当服务器请求完成 if(request.status===200){//status==200为服务器请求成功 var data=JSON.parse(request.responseText); if(data.success){//数据填写符合要求 document.getElementById('createResult').innerHTML=data.msg; }else{//数据填写不符合要求 document.getElementById('createResult').innerHTML="出现错误:"+data.msg; } }else{//服务器请求失败 alert("发生错误:"+request.status); } } } } } </script> <body> <h1>员工查询</h1> <label>请输入员工编号:</label> <input type="text" id="keyword"/> <button id="search">查询</button> <p id="searchResult"></p> <h1>员工创建</h1> <label>请输入员工姓名:</label> <input type="text" id="staffName"/><br> <label>请输入员工编号:</label> <input type="text" id="staffNumber"/><br> <label>请输入员工性别:</label> <select id="staffSex"> <option>男</option> <option>女</option> </select><br> <label>请输入员工职位:</label> <input type="text" id="staffJob"/><br> <button id="save">保存</button> <p id="createResult"></p> </body> 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

4. jQuery和PHP的JSON交互,如何处理二维数组

引用
6

mrshelly
的回复:jquery.json
插件.把jqGrid
数组处理成
json
串后.发送到服务器服务器接收(注意可能引号会转义)后,
json_decode
即可.
加上
第二个参数.可以把数据强制转化为
PHP
数组.先谢过楼上指点,我去试试看。

5. php怎么接收json数据格式

PHP接收JSON格式的数据
在API服务中,目前流行采用json形式来交互。
给前端调用的接口输出Json数据,这个比较简单,只需要组织好数据,用json_encode($array) 转化一下,前端就得到json格式的数据。
接收前端提交的json数据稍微复杂一点,原因是:PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型。因此,对型如text/xml 或者 soap 或者 application/octet-stream 和application/json格式之类的内容无法解析,如果用$_POST数组来接收就会失败!
此时可以使用$GLOBALS['HTTP_RAW_POST_DATA'] 或 file_get_contents('php://input') 来获取提交的数据
查看手册,可以发现$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST的区别:
$_POST:通过 HTTP POST 方法传递的变量组成的数组,是自动全局变量。
$GLOBALS['HTTP_RAW_POST_DATA'] :总是产生 $HTTP_RAW_POST_DATA 变量包含有原始的 POST 数据。此变量仅在碰到未识别 MIME 类型的数据时产生。$HTTP_RAW_POST_DATA 对于 enctype="multipart/form-data" 表单数据不可用。也就是说基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST是一样的。但是如果post过来的数据不是PHP能够识别的,你可以用 $GLOBALS['HTTP_RAW_POST_DATA']来接收,比如 text/xml 或者 soap 等等。

6. Javascript生成JSON怎么和PHP交互

js生成的json发到服务器上后,php接到之后本质上是一个字符串,可以用json_decode,将其转换为php变量,
反之,php可以将自己的array等编码为json(json_encode),然后发送给前端js处理。

7. php怎样使数据转化为JSON格式与JS进行交互

$data=[];你的数据
$json=json_encode($data);
echo$json;//返回数据


js:
//发送请求获取数据
varresponse='requestresult';

vardata=eval('('+response+')');//转换为JSON对象

for(letvofdata){
//使用数据
console.log(v);
}

8. php怎么接收json类型数据

PHP接收JSON格式的数据
在API服务中,目前流行采用json形式来交互。
给前端调用的接口输出Json数据,这个比较简单,只需要组织好数据,用json_encode($array) 转化一下,前端就得到json格式的数据。
接收前端提交的json数据稍微复杂一点,原因是:PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型。因此,对型如text/xml 或者 soap 或者 application/octet-stream 和application/json格式之类的内容无法解析,如果用$_POST数组来接收就会失败!
此时可以使用$GLOBALS['HTTP_RAW_POST_DATA'] 或 file_get_contents('php://input') 来获取提交的数据
查看手册,可以发现$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST的区别:
$_POST:通过 HTTP POST 方法传递的变量组成的数组,是自动全局变量。
$GLOBALS['HTTP_RAW_POST_DATA'] :总是产生 $HTTP_RAW_POST_DATA 变量包含有原始的 POST 数据。此变量仅在碰到未识别 MIME 类型的数据时产生。$HTTP_RAW_POST_DATA 对于 enctype="multipart/form-data" 表单数据不可用。也就是说基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST是一样的。但是如果post过来的数据不是PHP能够识别的,你可以用 $GLOBALS['HTTP_RAW_POST_DATA']来接收,比如 text/xml 或者 soap 等等。
补充说明:PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型。

阅读全文

与phpjson交互相关的资料

热点内容
同城公众源码 浏览:474
一个服务器2个端口怎么映射 浏览:282
java字符串ascii码 浏览:59
台湾云服务器怎么租服务器 浏览:460
旅游手机网站源码 浏览:315
android关联表 浏览:929
安卓导航无声音怎么维修 浏览:320
app怎么装视频 浏览:423
安卓系统下的软件怎么移到桌面 浏览:80
windows拷贝到linux 浏览:753
mdr软件解压和别人不一样 浏览:886
单片机串行通信有什么好处 浏览:324
游戏开发程序员书籍 浏览:848
pdf中图片修改 浏览:275
汇编编译后 浏览:478
php和java整合 浏览:833
js中执行php代码 浏览:447
国产单片机厂商 浏览:62
苹果手机怎么设置不更新app软件 浏览:289
转行当程序员如何 浏览:498