用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


相关推荐: 织梦cms后台提示common.inc.php文件属性为644问题解决方法_织梦CMS教程  常州自助建站费用包含哪些项目?  织梦dedecms后台邮件服务器明文密码修改为*星号显示的暗密码_织梦CMS教程  织梦实现列表页双样式和列表样式循环交替变化方法_织梦CMS教程  建站之星模板与系统推荐:一站式智能建站解决方案  如何在阿里云通过域名搭建网站?  如何选择建站程序?包含哪些必备功能与类型?  建站之星安装失败:服务器环境不兼容?  建站之星服务器配置流程详解与快速搭建操作指南  建站之星插件安装步骤与主题应用配置指南详解  如何快速搭建安全的FTP站点?  阿里云提示织梦后台文件media_add.php任意上传漏洞解决办法 _织梦CMS教程  定制建站哪家更专业可靠?推荐榜单揭晓  如何配置IIS站点权限与局域网访问?  黑客如何利用漏洞与弱口令入侵网站服务器?  如何快速生成专业多端适配建站电话?  dedecms织梦文章按年月日进行归档_织梦CMS教程  建站之星配置系统详解与新手快速建站指南  织梦dedecms让文章页关键词自动SEO内链_织梦CMS教程  如何正确选择百度移动适配建站域名?  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  建站之星上传入口如何快速找到?  dedecms织梦列表页单独调用总页数二次开发方法_织梦CMS教程  浅谈织梦cms模板中标签中的一些SEO细节_SEO优化教程  dedecms织梦uploadsafe.inc.php上传漏洞解决方法_织梦CMS教程  如何在宝塔面板创建新站点?  如何用景安虚拟主机手机版绑定域名建站?  如何续费美橙建站之星域名及服务?  如何在景安云服务器上绑定域名并配置虚拟主机?  dedecms织梦文章列表页随机放入广告的方法_织梦CMS教程  如何通过VPS建站实现广告与增值服务盈利?  阿里云提示织梦dedecms支付模块漏洞解决办法_织梦CMS教程  织梦dedecms使用阿里大鱼短信接口进行短信发送_织梦CMS教程  dedecms织梦自带采集插件详细图文教程_织梦CMS教程  如何选择服务器才能高效搭建专属网站?  帝国CMS6.0会员中心模板下载_帝国CMS教程  wdcp面板nginx服务器如何把二级目录301重定向到二级域名_织梦CMS教程  如何通过远程VPS快速搭建个人网站?  高端云建站费用究竟需要多少预算?  建站之星模板快速切换与风格调整操作指南  如何通过商城免费建站系统源码自定义网站主题?  建站之星如何通过成品分离优化网站效率?  魔方云NAT建站如何实现端口转发?  如何自定义建站之星网站的导航菜单样式?  建站之星|视频|教程如何快速提升网站排名?  建站之星安装路径如何正确选择及配置?  建站之星自适应模板:一站式自定义设计,高效打造专业网站  建站哪里好?优选平台推荐与关键词优化指南  建站之星配置系统全解析:快速搭建与模板选择技巧指南  建站IDE高效指南:快速搭建+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.