老师,我在用post 方法的时候,后台接收数据总是出现时有时没有的情况。然后报这个错误
1618134804(1).png
这时我写php文件先写这个
print_r($_POST);php 结尾处 print_r($success); 后台才会接收到前台数据;并且返回信息,否则连后台信息也不会返回。
若这个print_r($success)不写,也不行。
1618134898(1).png
1618135088(1).png
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<title>jqajax</title>
</head>
<style>
</style>
<body>
<div>
用户名:<input type="text" name="usename" class="usename"><br/>
密码:<input type="text" name="pass" class="pass"><br/>
<button>提交</button>
</div>
<script>
//获取类
var usename=document.querySelector('.usename');
var password=document.querySelector('.pass');
var btn=document.querySelector('button');
//提交时
btn.onclick=function () {
//创建一个xhr对象 准备发送ajax请求
//考虑兼容性问题
// if(window.XMLHttpRequest){
// var xhr=new XMLHttpRequest();
// }else if(window.ActiveXObject){
// var xhr=new ActiveXObject();
// }
var xhr=new XMLHttpRequest();
//目的:用onreadystatechange监听后台是否收到前台数据的回调函数
xhr.onreadystatechange=function () {
//判断前台向后台发送请求的状态 值为0 1 2 3 4
if(xhr.readyState==4){
//判断前端是否准备收到后台反馈得数
if(xhr.status==200) {
//获取后台传送的数据
console.log(xhr.responseText)
//解析数据
// console.log(JSON.parse(xhr.responseText))
}
}
}
// //get 方法
// //当准备好接收后台数据的回调函数后,着手准备发送ajax请求
// xhr.open('get','ajax.php?name='+usename.value+'&pass='+password.value,true);
// //设置后通过send方法发送到后台post
// xhr.send(null);
//post 方法
// //当准备好接收后台数据的回调函数后,着手准备发送ajax请求
xhr.open('post','ajax.php',true);
//设置后通过send方法发送到后台
var data=new FormData();
data.append('name',usename.value);
data.append('pass',password.value);
xhr.send(data);
}
</script>
</body>
</html>//获取前台数据
//print_r($_POST);
$name=$_POST['name'];
$pass=$_POST['pass'];
$success=array('msg'=>'ok');
//连接数据库
$con = mysqli_connect('localhost','root','','ceshi');
if($con){
mysqli_query($con,"set names utf8");
mysqli_query($con,"set character_set_client=utf8");
mysqli_query($con,"set character_set_results=utf8");
$sql='select * from `usename` where 1 ';
$res=$con->query($sql);
if($res->num_rows>0){
$info=[];
for($i=0;$row=$res->fetch_assoc();$i++){
$info[$i]=$row;
}
}
//判断是否登录成功
$flag=false;
for($j=0;$j<count($info);$j++){
if($info[$j]['name']==$name){
if($info[$j]['pass']==$pass){
$success['info']=0;
$flag=true;
break;
}
}else{
$success['info']=1;
}
}
}
else {
$success['info']=2;
}
json_encode($success);
print_r($success);
?>