Blogger Information
Blog 30
fans 0
comment 0
visits 23468
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
Ajax 三种方法实现留言板功能之 源生方法
深海巨兽皮皮虾的博客
Original
1624 people have browsed it

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格式


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post