首頁 > 後端開發 > PHP7 > 主體

PHP7留言板開發之 Ajax非同步提交

coldplay.xixi
發布: 2023-02-17 18:20:01
轉載
1809 人瀏覽過
PHP7教學介紹關於留言板開發的Ajax非同步提交

PHP7留言板開發之 Ajax非同步提交

#推薦(免費):php7教學ajax教學

前言

這節教學算是這張專輯的重中之重吧。隨著前端技術的不斷迭代更新,網站許多功能的實現都轉移到前端去實現,2018年第一季程式語言排名來看,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(){
    // 这里判断服务器是否有数据响应,如果有则做些你要处理的逻辑,比如提示用户操作成功
}
登入後複製

上面四步驟還理解不了的話,可以認為是第一步找個朋友A發郵件,第二步給這位A朋友寫信件內容並封裝寫上地址貼郵票,第三步投遞郵件,過了一陣(當然網路通的情況下立即有回應的),第四步收到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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板