用PbootCms的API接口制作Ajax无刷新留言_PbootCMS教程


我们在制作模板的过程中,经常会使用到留言板等表单提交功能,常规的表单提交方式每次提交会有一个跳转,对访客不友好。有没有更好的UEO(用户体验)方案呢?有的,PbootCms有留言、表单的API接口,我们来做一个Ajax方式提交留言 。

实现过程

首先,写好表单的HTML代码。

<div class="form">
    <form action="" method="post">
        <div class="unit-group input">
            <div class="uk-grid">
                <div class="uk-width-1-2@m unit unit-left">
                    <input id="Contacts" class="tm-transition" type="text" name="contacts" placeholder="您的称呼:">
                </div>
                <div class="uk-width-1-2@m unit unit-right">
                    <input id="Home_contact_mail" class="tm-transition" type="text" name="home_contact_mail" placeholder="您的邮箱:">
                </div>
            </div>
        </div>
        <div class="unit-group textarea">
            <textarea id="Content" class="tm-transition" name="content" placeholder="请输入您想要跟我们说的话"></textarea>
        </div>
        <div class="uk-text-center unit-group button">
            <button class="tm-transition" type="submit">联系我们</button>
        </div>
    </form>
</div>

上面的代码其实不重要,关键就是表单的action留空,表单元素(input、tetxerea等)的name和后台的表单字段对应。

其他的就根据自己页面样式需求来写即可。

接下来是重点:

1、首先Ajax提交需要在表单的按钮点击的时候触发。

//.hengbok-home-contact button 就是表单中的button提交按钮

jQuery('.hengbok-home-contact button').on('click', function(){

    //执行代码

});

注:以下的代码都写在上面的执行代码中。

2、定义一些需要用到的变量。

var url  = '/api.php/cms/addmsg';    //Api的地址,我这里是留言接口,如果自定义表单的话填写表单接口

//定义data对象,默认包含appid,timestamp和signature

var data = {

        appid: '{@pboot:appid}',

        timestamp: '{@pboot:timestamp}',

        signature: '{@pboot:signature}',

    };

//定义一个空数组,用来储存表单提交过来的内容 

var parm = new Array();

//将表单提交过来的内容储存到数组中去

parm['contacts'] = jQuery('#Contacts').val();

parm['home_contact_mail'] = jQuery('#Home_contact_mail').val();

parm['content'] = jQuery('#Content').val();

//循环数组,将表单提交的内容添加到data对象中

for (var i in parm) {

    data[i] = parm[i];

}

请手动删除代码中的@符号,本站基于PbootCms搭建,加@符号防止解析

3、发起Ajax请求。

//通过第二步,构建了Api所需的url和data,接下来就可以发起Ajax请求了

jQuery.ajax({

    type: 'POST',        //提交的类型为 POST

    url: url,            //url地址为上面定义的url变量

    dataType: 'json',    //提交的数据类型为 json

    data: data,          //提交的数据为上面构建的数据

    //提交成功

    success: function( response, status ){

        //Api返回的内容,例如“留言成功”,“留言失败”等

        var Data = response.data;

        //如果成功,返回的code为1,失败返回0

        if( response.code == 1 ){

            //留言成功,向页面的DOM插入成功提示,更改样式。如果需要其他操作就自由发挥吧。

            jQuery('.status .text').text('感谢您的留言,我们会尽快跟您联系!');

            jQuery('.status').removeClass('error');

            jQuery('.status').addClass('open success');

            return false;

        } else {

            //留言失败,比如某个字段没有填写,返回XXX字段为空这样的提示。

            jQuery('.status .text').text( Data );

            jQuery('.status').removeClass('success');

            jQuery('.status').addClass('open error');

            return false;

        }

    },

    //提交失败,将信息输出到控制台查看

    error: function( xhr, status, error ){

        console.log( error );

    }

});

//Ajax提交后返回false,防止因为点击了表单的提交按钮造成的页面跳转。(实际上Ajax提交留言不一定需要form标签,不过写代码还是规范点比较好)

return false;

4、完善Ajax留言。

//因为Api没有验证码,并且PbootCMS默认也只是简单验证字段是否为空,所以在Ajax提交的时候稍微做一些简单的表单验证。

//验证表单字段是否为空,在“将表单提交过来的内容储存到数组”之前验证。

if( parm['xxx'] == '' ){

    jQuery('.status .text').text('请输入xxx。'); //如果为空的话,Api会默认返回一个提示语,不过在这里验证的话,可以自定义个性的提示语。

    //对DOM进行CSS操作

    jQuery('.status').removeClass('success');

    jQuery('.status').addClass('open error');

    //返回false,终止表单提交

    return false;

}

//验证邮箱格式,电话号码等。通过正则方式来验证访客输入的邮箱或者电话号码是否符合规范,返回提示。

if ( parm['home_contact_mail'] != '' ) {

    var reg = /^w+((-w+)|(.w+))*@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+$/;

    if( !reg.test( parm['home_contact_mail'] ) ) {

        jQuery('.status .text').text('您的邮箱格式不对,请检查。');

        jQuery('.status').removeClass('success');

        jQuery('.status').addClass('open error');

        return false;

    }

}

//验证留言内容长度

var ConLength = 15;    //定义内容至少输入的字符数量

//对留言内容长度和至少输入的字符数量进行比较

if( parm['content'].length < ConLength ){

    var MoreLength = ConLength - parm['content'].length;    //计算当前内容长度和至少输入的字符数量的差

    jQuery('.status .text').text('您想要说的就这么多吗?请再写 ' + MoreLength + ' 个字吧。');    //个性化提示访客还需要输入多少字符

    jQuery('.status').removeClass('success');

    jQuery('.status').addClass('open error');

    return false;

}

//验证两次留言的时间间隔,在时间间隔内不允许多次提交

//(1)、首先在Ajax留言成功的时候获取时间

var Time = Date.parse(new Date())/1000;

//(2)、将留言时间写入浏览器本地存储

localStorage.setItem('home_contact_time', Time);

//(3)、在进行Ajax提交之前获取button点击时的时间,并于浏览器本地存储的时间进行比较

var Interval    = 60;  //设置两次留言的时间间隔,单位:秒

var LastTime    = localStorage.getItem('home_contact_time');  //获取上次留言时间

var CurrentTime = Date.parse(new Date())/1000;  //获取当前时间

if( LastTime && ( CurrentTime - LastTime ) < Interval ){    //比较言时间

    var NextTime = Interval - ( CurrentTime - LastTime );   //获取需要N秒后才可以留言

    jQuery('.status .text').text('您的留言太频繁了,请您休息' + NextTime + '秒后再进行操作。');

    jQuery('.status').removeClass('success');

    jQuery('.status').addClass('open error');

    return false;

}

效果展示


# 营销推广时间与预算  # 在上面  # 网站首页排名SEO搜索优化  # 贝词网seo  # 百度seo排名公司搜行者SEO  # 东莞网站建设一薇  # 阿信seo短视频企业  # 江门网络营销推广更优惠  # 新北区网站建设优化  # 聊城抖音搜索seo排名  # 网站排名优化琱zhousi39宙斯  # 会使  # 新的seo网站优化排名 排名  # 融水实用的网站建设推广  # 优化网站排名服务  # 顺义双语网站建设  # seo职员工作内容  # 小红书营销推广条件分析  # 政府网站建设人员组成  # 江门seo报告  # 网站开发与建设教案  # 微推广营销部  # 跳转  # PbootCMS教程  # PbootCms  # 表单  # 您的  # 访客  # 为空  # 两次  # 请输入  # 留言内容  # 自定义  # 用PbootCms的API接口制作Ajax无刷新留言  # 您想  # 在这里  # 会有  # 这么多  # 请您  # 其他的  # 所需  # 比较好  # 还需要 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 网络优化91478 】 【 技术知识72672 】 【 云计算0 】 【 GEO优化84317 】 【 优选文章0 】 【 营销推广36048 】 【 网络运营41350 】 【 案例网站102563 】 【 AI智能45237


相关推荐: 宝塔Windows建站如何避免显示默认IIS页面?  如何正确下载安装西数主机建站助手?  帝国CMS会员中心每日签到,可领取全勤奖励_帝国CMS教程  如何在新浪SAE免费搭建个人博客?  魔方云NAT建站如何实现端口转发?  建站之星伪静态规则如何正确配置?  如何在服务器上三步完成建站并提升流量?  如何快速搭建FTP站点实现文件共享?  建站之星如何快速更换网站模板?  织梦让相关文章标签likearticle的mytypeid支持多个栏目和子栏目_织梦CMS教程  如何在搬瓦工VPS快速搭建网站?  建站之星后台管理系统如何操作?  新手站长如何简单搭建一个织梦网站_织梦CMS教程  织梦后台编辑器div标签自动转P标签的方法_织梦CMS教程  建站之星配置全解析:模板选择与填写指南轻松掌握  织梦DEDECMS列表页缩略图随机调用教程_织梦CMS教程  定制建站哪家更专业可靠?推荐榜单揭晓  dedecms织梦二次开发独立点赞功能_织梦CMS教程  建站主机无法访问?如何排查域名与服务器问题  孙琪峥织梦建站教程如何优化数据库安全?  织梦的联动信息类型只能增加一级和三级选择,不能增加二级选择解决方法_织梦CMS教程  织梦dedecms文章arclist标签实现分页的教程_织梦CMS教程  织梦一级目录作域名list.php无法跳转到手机站解决方法_织梦CMS教程  安徽网站建设与外贸建站服务专业定制方案  织梦游客输入昵称进行评论的简单方法_织梦CMS教程  如何确认建站备案号应放置的具体位置?  织梦网站会员邮箱验证在阿里云ECS服务器上无法发送邮件_织梦CMS教程  建站之星是否提供免费建站服务?  织梦有效去除面包屑当前位置position导航中*后“&gt;”符号的方法_织梦CMS教程  织梦自定义PHP页面让模板支持调用标签_织梦CMS教程  如何用西部建站助手快速创建专业网站?  如何解决ASP生成WAP建站中文乱码问题?  织梦修改下载地址{dede:field name='softlinks'/}只显示链接方法_织梦CMS教程  dedecms织梦的搜索页支持dede标签的方法_织梦CMS教程  香港服务器WordPress建站指南:SEO优化与高效部署策略  PHPCMS实现文章置顶功能文章不重复的方法_PHPCMS教程  织梦实现全站按TAG和关键字调用相关文章教程_织梦CMS教程  帝国cms灵动标签怎么调用栏目缩略图_帝国CMS教程  建站主机CVM配置优化、SEO策略与性能提升指南  织梦dedecms上下篇文章标题长度修改_织梦CMS教程  织梦dedecms编辑器整合七牛云存储实现文件上传同步云存储教程_织梦插件  dedecms织梦根据特定需要调用文章的标签代码_织梦CMS教程  建站助手4.1:智能建站与SEO优化工具一键生成高效模板  建站助手使用教程:自助建站工具操作指南与SEO优化技巧  织梦cms移动版伪静态实现与PC电脑版静态地址url一致教程_织梦插件  如何用wdcp快速搭建高效网站?  建站助手数据库密码错误与MySQL服务异常排查指南  如何基于云服务器快速搭建网站及云盘系统?  建站后如何快速上传程序文件?  DedeCMS系统SEO优化之URL目录化设置_SEO优化教程 

 2022-04-03

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

南京市珐之弘网络技术有限公司


南京市珐之弘网络技术有限公司

南京市珐之弘网络技术有限公司专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 87067657

 13565296790

 87067657@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.