>  기사  >  백엔드 개발  >  PHP7 메시지 보드 개발을 위한 Ajax 비동기 제출

PHP7 메시지 보드 개발을 위한 Ajax 비동기 제출

coldplay.xixi
coldplay.xixi앞으로
2020-12-18 09:10:461787검색
PHP7 Tutorial메시지 보드 개발 시 Ajax 비동기 제출 소개

PHP7 메시지 보드 개발을 위한 Ajax 비동기 제출

권장(무료): php7 Tutorial, ajax Tutorial

머리말

이 튜토리얼은 이 앨범 Bar의 가장 중요한 부분입니다. 프런트엔드 기술의 지속적인 반복 업데이트로 인해 웹사이트의 많은 기능 구현이 프런트엔드로 이전되었습니다. 2018년 1분기 프로그래밍 언어 순위에 따르면 JavaScript는 여전히 가장 인기 있는 프로그래밍 언어입니다. 따라서 js를 깊이있게 배우고 싶다면 Ajax가 필수적입니다.

이전 강좌에서 js 검증에 대해 이야기한 적이 있습니다. 코스웨어 코드는 프렌즈의 PHP7 메시지판 개발(JS 검증)을 기반으로 ajax 비동기 작업 부분만 추가하면 쉽게 완료할 수 있습니다.

여기서는 XMLHttpRequest 객체가 무엇인지, 왜 사용해야 하는지 등에 대해 자세히 설명하지 않는다는 점에 유의해야 합니다. 사용해 본 후 자세히 알아보면 더 감동받을 것이라고 믿습니다. 여기서는 가능한 한 적은 단어를 유지하려고 노력하고 수업 시험 중심의 교육을 통해 학습 결과를 얻을 수 있습니다.

편집기를 열고 시작해보세요!

Ajax 비동기 핵심 부분에 대한 설명
// 第一步 创建 XMLHttpRequest 对象,为了更容易理解,变量就用ajax
var ajax = new XMLHttpRequest();

// 第二步 初始化一个Ajax请求,url参数是远程请求地址ajax.php
ajax.open('POST', url, true); // 这里用到post提交留言,所以用post方式提交给服务器
// ajax.open('GET', url, true); // get方式请求服务器

// 第三步 发送请求;如果该请求是异步模式(默认),该方法会立刻返回。
ajax.send(inputdata);

// 第四步 发送请求总该要知道有没收到吧,这里就需要用到Ajax的事件监听器onreadystatechange 
ajax.onreadystatechange = function(){
    // 这里判断服务器是否有数据响应,如果有则做些你要处理的逻辑,比如提示用户操作成功
}

위의 4단계를 아직도 이해하지 못한다면 이메일을 보낼 친구 A를 찾는 첫 번째 단계, 친구 A를 찾는 두 번째 단계라고 생각하시면 됩니다. 친구 A에게 편지 내용을 작성하고 주소로 캡슐화한 후 3단계에서 메일을 전달합니다. (물론 인터넷 연결이 가능하면 즉시 응답됩니다.) 네 번째 단계에서 친구 A로부터 답장을 받았고 매우 기뻤습니다. 다음으로 회신 내용에 따라 회의(온라인)나 약속 잡기 등의 작업을 수행할 수 있습니다...

완전한 코드는 다음과 같습니다.

HTML+JS 페이지 코드
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>留言板_科科分享</title>
        <!-- 2.新建css样式文件并根据效果图编写css代码 -->
        <link rel="stylesheet" href="feedback.css">
        <!-- 3.js表单验证 -->
        <script type="text/javascript">
            function checkform(){
                var nickname = document.getElementsByTagName('input')[0].value; // 获取用户输入的姓名
                var tel = document.getElementsByTagName('input')[1].value; // 获取用户输入的联系方式
                var content = document.getElementsByTagName('textarea')[0].value; // 获取用户输入的留言内容
                // 如果没有输入姓名 则提示
                if(nickname == ''){
                    alert('请输入您的姓名');
                    document.getElementsByTagName('input')[0].focus(); // 将光标定位到姓名输入框
                    return false; // 阻止冒泡 输入姓名后才能通过
                }
                // 如果没有输入联系方式 则提示
                if(tel == ''){
                    alert('请输入您的联系方式');
                    document.getElementsByTagName('input')[1].focus(); // 将光标定位到联系方式输入框
                    return false;  // 阻止冒泡 输入联系方式才能通过
                }
                // 如果没有输入留言内容 则提示
                if(content == ''){
                    alert('请输入您的联系方式');
                    document.getElementsByTagName('textarea')[0].focus(); // 将光标定位到留言内容输入框
                    return false;  // 阻止冒泡 输入留言内容才能通过
                }
                
                // js已经拿到了用户提交的数据,那接下来就是AJAX(页面无刷新提交数据到服务器-异步通信)
                // 异步请求 start
                var ajax, url, inputdata;
                // 创建 XMLHttpRequest 对象
                if(window.XMLHttpRequest){
                    ajax = new XMLHttpRequest();
                }else{
                    // 兼容Internet Explorer(IE5 和 IE6)使用 ActiveX 对象
                    ajax = new ActiveXObject("Microsoft.XMLHTTP");
                }
                url = 'ajax.php';
                ajax.open('POST', url, true);
                ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");  // 用POST的时候一定要有这句
                inputdata = 'nickname='+nickname+'&tel='+tel+'&content='+content;
                ajax.send(inputdata);
                // 接收服务器返回的数据
                ajax.onreadystatechange = function(){
                    // 获取服务器响应状态码
                    if(ajax.readyState == 4 && ajax.status==200){
                        // 获取服务器返回的响应返回的数据
                        var retdata = ajax.responseText;
                        if(retdata == 1){
                            alert('留言信息已提交成功!感谢您的宝贵意见。');
                        }
                    }
                }
                // 异步请求 end
                return false; // 这里是为了方式submit点击后表单自动提交
                // document.feedback_form.submit(); // 提交用户数据到后端action中的地址
            }
        </script>
    </head>
    <body>
        <!-- 工作区,呈现给用户看的 -->
        <!-- 1.开始搭建脚手架 -->
        <p class="container_box">
            <p class="up">
                <h3 class="title">留言板</h3>
                <h5 class="subtitle">FEEDBACK</h5>
            </p>
            <p class="down">
                <form name="feedback_form" action="/#" method="post" onsubmit="return false;">
                    <p class="input">
                        <input type="text" class="fl" name="name" placeholder="输入您的姓名" /> 
                        <input type="text" class="fr" name="tel" placeholder="输入您的联系方式" />
                    </p>
                    <textarea class="content" cols="30" rows="10" name="nr"></textarea>
                    <input type="submit" onclick="checkform()" value="提交您的留言" class="sub" />
                </form>
            </p>
        </p>
    </body>
</html>
PHP 코드(ajax.php)
<?php
include &#39;config.php&#39;;

// POST接收用户提交的数据
$nickname = !empty($_POST[&#39;nickname&#39;])? addslashes(strip_tags($_POST[&#39;nickname&#39;])):&#39;&#39;; // 留言人名称
$tel = !empty($_POST[&#39;tel&#39;])?addslashes(strip_tags($_POST[&#39;tel&#39;])):&#39;&#39;; // 留言人的联系方式
$content = !empty($_POST[&#39;content&#39;])?addslashes(strip_tags($_POST[&#39;content&#39;])):&#39;&#39;; // 留言内容
$time = time(); // 当前系统时间,即用户留言时间

// 插入mysql语句
$sql = "INSERT INTO feedback (name, contact, content, addtime) VALUES (&#39;{$nickname}&#39;, &#39;{$tel}&#39;, &#39;{$content}&#39;, &#39;{$time}&#39;)";

// 立即执行mysql语句
$result = mysqli_query($mysqli, $sql); // 返回一个资源标识符,通常是数字
$insert_id = mysqli_insert_id($mysqli); // 返回数据表的自增长ID,比如新用户注册返回用户ID
// echo $insert_id; // 当你在调试的时候,你会发现echo是很好的帮手。
if($insert_id > 0){
    // 如果入库成功,这里可以处理其他想要的逻辑
    echo 1;
    exit;  // 退出程序,使其不再往下执行代码
}
// 这是错误的时候返回0
echo 0;
exit;

연습하는 것을 잊지 마세요! 아래 댓글 영역에 낙서를 하신 것을 환영합니다! ~

위 내용은 PHP7 메시지 보드 개발을 위한 Ajax 비동기 제출의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 jianshu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제