js发送数据php接收并解析显示

1、js 用post发送json数据
2、php接收json数据并解析成数组

<?php 
if ($_SERVER['REQUEST_METHOD']==='POST'&&empty($_POST)){//判断如果是post并且$_POST为空则是json数据
	$content=file_get_contents('php://input');//获取json数据的固定写法,暂时不懂什么意识
	// $content=json_decode($content, true);
	$file=fopen('./record/jsontest.txt', 'w');
	fwrite($file,$content);
	fclose($file);
	
	echo $content;
	exit();//php退出,不返回下面的html代码
}
// 1、通过js发送json数据,php获取后返回原数据,js再利用eval('('+content+')')解析


 ?>
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <button id='btn'>按钮</button>
    <?php 
    $_file=fopen('./record/jsontest.txt','r');
    $content=fread($_file,filesize('./record/jsontest.txt'));
    $content=json_decode($content,true);//第二个参数true则返回数组类型,默认flase则是对象类型,
    // echo $content['a']];
    // var_dump($content);
    fclose($_file);
    foreach ($content as $key => $value) {
    	echo $key,'=', $value;
    	echo "<br>";
    }

     ?>
    
    <script type="text/javascript">
    	var btn = document.querySelector("#btn");
    	
    	var data1={a:1,b:2,c:3};
    	data1.vison=navigator.appVersion;//navigator返回浏览器及计算机的很多信息,这里还没研究

    	data1=JSON.stringify(data1);//用js中内置对象JSON,将js对象转换成JSON字符串
    	
    	//data1=eval('('+data1+')')//eval函数是执行字符串函数,将JSON字符串转换成JSON对象,注意要用单引号
			  
    	
    	btn.onclick = function() {
        	var xml = new XMLHttpRequest();
	        xml.open("POST",location.href,true)
	        //下面是发送json数据的固定写法
	        xml.setRequestHeader("Content-type", "application/json");
	        xml.setRequestHeader("kbn-version", "5.3.0");	        
	        xml.send(data1);	        
	        xml.onreadystatechange = function () {
		        if (xml.readyState == 4 && xml.status == 200) {
		        	var content=xml.responseText;
		        	//解析获取的json数据
		        	content=eval('('+content+')')
		        	console.log(content.b);
		        }
		    }
    	}	
    </script>
</body>

</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值