博主信息
博文 30
粉丝 0
评论 0
访问量 27947
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
Ajax 三种方法实现留言板功能之 源生方法
深海巨兽皮皮虾的博客
原创
1797人浏览过

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+'&nbsp;&nbsp;&nbsp;发布时间:'+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格式


本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学