原标题:为博客提供订阅功能

以“为博客增加订阅功能”为例,来介绍用ajax提交表单的方法。

前端html5+js

欢迎使用ExASIC订阅服务

仅用于ExASIC最新文章通知,方便及时阅读。

订阅

退订

提交

button的类型是button,而不是submit,这样我们就可以调用自定义js函数submit_email()向后台提交email。

function submit_email(){

var email = document.getElementById("exampleInputEmail1").value;

var type_r1 = document.getElementById("inlineRadio1");

var type_r2 = document.getElementById("inlineRadio2");

var type;

if(type_r1.checked){

type = type_r1.value;

}else{

type = type_r2.value;

}

//check email rule

if(email.length > 150){

alert("请输入正确的邮箱格式");

return;

}

pat = /^[a-zA-Z0-9._\-]{3,100}@[a-zA-Z0-9._\-]+\.(com|cn|net|top|fun|org|tech|ren|dev|jp|us|au)$/;

if(pat.test(email) == false){

alert("请输入正确的邮箱格式");

return;

}

//ajax: ie7+, firefox, chrome, opera, safari (not support ie5, ie6)

var xmlhttp;

if(window.){

xmlhttp = new ();

xmlhttp.onreadystatechange = function(){

if(xmlhttp.readyState==4 && xmlhttp.status==200){

alert(xmlhttp.responseText); //display success or failure

}

}

xmlhttp.open("POST", "subscribe.php", true);

xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");

var arg = "email=" + email + "&type=" + type;

xmlhttp.send(arg);

} //end of if(window...

}

在submit_email()函数开头,先用getElementById().value获取用户的email和type。再用js正则来检查email是否符合电子邮箱的命名规则。然后用ajax方式向后台提交POST请求,把email和type发送给php服务器。最后按照php服务器的回复xmlhttp.responseText来显示订阅的结果。

效果如下:

后端php+mysql

$email = $_POST['email'];

$type = $_POST['type'];

//

//connect to database

//

$mysql_svr_name = "mysql_server";

$mysql_db_name = "db_name";

$mysql_db_user = "user";

$mysql_db_pwd = "pwd";

$conn = mysql_connect($mysql_svr_name, $mysql_db_user, $mysql_db_pwd);

if(!$conn){ die(mysql_error()); }

mysql_select_db($mysql_db_name, $conn);

mysql_query('set names utf8');

//query

$sql = "SELECT count(*) as total FROM `email` WHERE `email` = '" . $email . "' LIMIT 1";

$res_tmp = mysql_query($sql, $conn);

$res_row = mysql_fetch_array($res_tmp);

$count = $res_row['total'];

if($count == 0 && $type == 2){

echo "您要退订电子邮箱不存在";

}else if($count == 1 && $type == 1){

echo "您已经成功订阅ExASIC";

}else if($count == 0 && $type == 1){ //add

$sql = "INSERT INTO `email` (`email`) VALUES ('";

$sql .= $email;

$sql .= "')";

$res_tmp = mysql_query($sql, $conn);

if(mysql_affected_rows() == 1){

echo "恭喜,您已成功订阅ExASIC";

}else{

echo "内部错误,请稍后再试";

}

}else if($count == 1 && $type == 2){ //delete

$sql = "DELETE FROM `email` WHERE `email` = '" . $email . "'";

$res_tmp = mysql_query($sql, $conn);

if(mysql_affected_rows() == 1){

echo "您已成功退订ExASIC";

}else{

echo "内部错误,请稍后再试";

}

}else{

echo "内部错误,请稍后再试";

}

?>

先从$_POST[""]中用获得email和type,再查询数据库中是否已经存在记录。再根据实际情况进行增删操作。最后echo "msg",返回给前端。

总结

本文介绍了ajax的使用方法,并详细介绍了为博客增加订阅功能的实现过程。下面画出了代码的示意图,方便理解ajax。

责任编辑:

mysql自带订阅功能_为博客提供订阅功能相关推荐

  1. jsp mysql 博客系统_个人博客系统的设计与实现(JSP,MySQL)

    个人博客系统的设计与实现(JSP,MySQL)(任务书,开题报告,中期检查表,文献综述,外文翻译,毕业论文15000字,程序代码,MySQL数据库) 本系统利用JSP开发技术,以MySQL作为后台数据 ...

  2. Diango博客--20.开启 Django 博客的 RSS 功能

    1.Rss简介 博客提供 RSS 订阅应该是标配,这样读者就可以通过一些聚合阅读工具订阅你的博客,时时查看是否有文章更新,而不必每次都跳转到博客上来查看.现在我们就来为博客添加 RSS 订阅功能. R ...

  3. CSDN产品公告第3期:博客数据统计功能上线,OFFER大挑战等你来!

    各位小主,咱们又见面了!在前两期的公告中,CSDN产品组已感受到大家对我们深沉的爱,再此谢谢大家的褒贬.服务好每一位用户,是我们一直不变的初心. 在过去一周,开发在产品的鞭策下,又带来了哪些功能呢? ...

  4. hexo next主题为博客添加分享功能

    今天心血来潮,决定给博客添加分享功能,百度上首先是找到了使用shareSDK的分享功能,最后在实践的过程中发现它添加时步骤比较多,添加完成后效果比较丑(就是一个长条的浅蓝色按钮),而且点击后想要退出分 ...

  5. 作为程序员我给csdn博客添加打赏功能

    作为程序员我给csdn博客添加打赏功能 前几天在专家微信群里提到c币太多,无法消费的问题,就提出了博客打赏功能. 目前我们csdn的c币除了兑换论坛积分,下载积分,c币商城,csdn学院外几乎没有可消 ...

  6. 为 hexo 博客添加本地搜索功能

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:我的大学到研究生自学 Java 之路,过程艰辛,不放弃,保持热情,最终发现我是这样拿到大厂 offer 的!个人 ...

  7. 基于python的个人博客系统的设计开题报告_个人博客设计实现开题报告

    现在的毕业设计的开题报告是很难写吗,以个人博客设计为课题的开题报告怎么写?看下文是yjbys小编搜集整理的关于开题报告的相关资料,希望对大家有所帮助! 1本课题所涉及的问题在国内(外)的研究现状综述: ...

  8. 如何控制Yahoo! Slurp蜘蛛的抓取频度_国外博客资源站_百度空间

    如何控制Yahoo! Slurp蜘蛛的抓取频度_国外博客资源站_百度空间 如何控制Yahoo! Slurp蜘蛛的抓取频度 2009年08月13日 星期四 5:56 上周末豆瓣的阿北给我电话:最近你们雅 ...

  9. Javascript实现博客全文搜索功能

    摘要 搜索是一个在购物网站.论文检索网站.社交网站等相关网站中被广泛使用的功能.为了不借助后台代码实现本人博客的搜索功能,本文使用Javascript代码对其进行简单实现.该搜索功能的亮点包括:使用纯 ...

最新文章

  1. UE5和Blender中的完整场景环境创建学习教程
  2. php判断数组是否存在字符串中,php判断数组元素中是否存在某个字符串的方法
  3. 你离高级工程师有多远
  4. 华为数据中心服务器数量,IDC 与华为联合发布《全闪存数据中心白皮书》,目前已有多个应用...
  5. python中二进制文件_Python学习基础篇 -6: Python中的文件操作
  6. 定义交货类型的装运点确定规则
  7. 我的学习之路_第二章_接口/多态
  8. HTML的target属性中_blank、_self、_parent、_top含义
  9. 状压dp之二之三 炮兵阵地/玉米田 By cellur925
  10. hrbp 牵着鼻子走_防止被下属牵着鼻子走的四个经典方法,学会了,下属就好管了...
  11. 关于ubuntu拒绝被ssh访问
  12. [转载]基于TFS实践敏捷-工作项跟踪
  13. 计算不确定度的小工具
  14. wine装通达信_linux下安装虚拟机,完美在linux系统下运行通达信软件
  15. 持久层框架JPA与Mybatis该如何选型
  16. PHP直播源码,直播系统源代码功能有哪些?
  17. 计算机函数公式 加法,excel怎样使用加法函数公式
  18. android 自定义控件实现3D画廊效果
  19. SAR影像辐射定标工程化实现之COSMO-Skymod
  20. python输入税前工资打印税后工资-python-计算个人所得税

热门文章

  1. Android学习之反编译工具的使用
  2. Linux学习笔记(四)之用户登录
  3. MyBatis多表查询(一对一,一对多,多对多)
  4. ProtoBuf3语法指南(Protocol Buffers)_上
  5. element-ui表单校验
  6. asp.net mvc 包含了一个 html 的助手类在哪里,c# - 在App_Code中使用@HTML的ASP.NET MVC Razor Helper - 堆栈内存溢出...
  7. C# 错误 175: 具有固定名称“System.Data.SQLite.EF6”的 ADO.NET 提供程序未在计算机或应用程序配置文件中注册或无法加载
  8. 南通大学计算机学院何鹏,南通大学第一次自主评教授,加油!再评多点。
  9. d - 数据结构实验之查找四:二分查找_【数据结构】资料
  10. 前台setcookie之后从后台取出来_后台设置Cookie值,前台进行获取