Ajax 实现异步提交,在不刷新页面的情况下将数据发送到服务器进行处理,并返回被处理后的结果
Ajax原生 方法 使用XMLHttpRequest对象:
前台脚本:
<script>
var btn = document.getElementById('submit');
btn.onclick = function(){
//获取内容
var text = document.getElementById('text').value;
//拼接字符串
var data = 'content='+text;
//创建XML请求对象
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){
//JSON.parse(text,function)将返回的json数据转化为对象
var json = JSON.parse(xhr.responseText);
if(json.status ==1){
alert('留言成功');
//创建节点
var li = document.createElement('li');
//设置class
// li.className('list-group-item');
// li.style.border = 'none';
var list = document.getElementsByTagName('ul')[1].getElementsByTagName('li');
li.innerHTML = '<span>发布者:'+json.name+' 发布时间:'+json.create_time+'</span><br>' + '<p>' +
json.content +'</p>';
document.getElementsByTagName('ul')[1].insertBefore(li,list[0]);
}
}
};
xhr.open('POST','mess.php',true);
xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');
xhr.send(data);
return false;
}
</script>后台脚本:
session_start();
$user_id = isset($_SESSION['user_id'])? $_SESSION['user_id']:'';
$content = $_POST['content'];
$create_time = time();
require "public/connect.php";
$sql = 'INSERT message SET user_id=:user_id,content=:content,create_time=:create_time';
$pdoStmt = $pdo->prepare($sql);
$pdoStmt->bindParam('user_id',$user_id);
$pdoStmt->bindParam('content',$content);
$pdoStmt->bindParam('create_time',$create_time);
if ($pdoStmt->execute()){
echo json_encode(['status'=>1,'id'=>$user_id,'create_time'=>date('Y年 m月 d日 H时 i分 s秒',$create_time),'conent'=>$content]);
}else{
echo json_encode(['status'=>0,'info'=>'留言失败']);
}总结:1.基本步骤 :
a.生成 XMLHttpRequest()对象,
b创建onreadystatechange事件 每次当readyState变化时都会触发该事件
c.xhr.open()获取整个php脚本对数据进行处理,设置请求头,xhr.sned(text)要被处理的数据
d.判断当前HTTP请求状态 1.初始化 2. 建立连接 3.处理中 4 .处理完毕 与xhr,status 200 时 加载成功
e.将已经获取到的请求文本通过 JSON.parse() 转换为对象
f.后台通过操作 json_encode() 使经过处理的数据 转化为json格式
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号