定义一个前端页面 send.html 发送的ajax请求,假设需要将数据发送到accept.php
//send.html添加分类
function addType(){
let typeName = document.getElementById('typeName').value
typeName = typeName.trim()
//定义数据对象,为发送数据准备
let data = {
"typeName":typeName,
...
}
//将JavaScript对象转换为json格式数据
data = JSON.stringify(data)
let addTypeXhr = new XMLHttpRequest();
addTypeXhr.onreadystatechange=function(){
if(addTypeXhr.readyState == 4 && addTypeXhr.status == 200){
//对发送完数据后的操作
console.log(data);
}
}
addTypeXhr.open("POST","http://youselfUrl.php")
//这里必须要设置Content-Type 值为 application/json; charset=utf-8
addTypeXhr.setRequestHeader('Content-Type', 'application/json; charset=utf-8');
//将定义的数据通过send()发送
addTypeXhr.send(data);
}
原生php写的后端如何接收呢?
正常情况使用$_GET / $_POST接收前端传回来的数据,但是用这两个方法都是无法接收的前端的json数据的,用这个 file_get_contents("php://input") 方法可以获取到json数据,将json数据转换为php对象,然后通过 -> 获取对象值
<?php
//accept.php 代码,接收前端发送的josn数据
// $data = $_POST; //当接收json格式的数据时 输出$data 为null
//需要使用这个方法,才能接收到前端发送的json数据,数据格式为单纯的字符串格式 'data...'
$data = file_get_contents("php://input");
//将前端发送的json数据,转换为php对象
$data =json_decode($data);
$typeName = $data->typeName;
echo $typeName
?>