PHPCMS V9使用ajax方式提交表单

本文介绍了一个使用jQuery和PHP实现的简单邮箱订阅表单。该表单包括输入验证及AJAX提交功能,并详细展示了前端HTML表单结构和后端处理逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

页面效果:

实现步骤:

一、前台模板(注:需要引入jquery文件)

<form id="myform" class="subscribe-form subscription" >
      <input type="hidden" name="fid" value="15">
      <input type="hidden" name="sid" value="1">
      <input type="hidden" name="dosubmit" value="1">
      <input type="email" id="yemail" name="info[yemail]" placeholder="请输入邮箱">
      <input type="button" value="提交" onclick="formsubmit()">
      <div class="clearfix"></div>
      <p class="newsletter-success"></p>
      <p class="newsletter-error"></p>
</form>

<script language="javascript">
function formsubmit() {
    var yemail = $('#yemail').val();
    if (yemail == '') {
      $(".newsletter-error").html("邮箱不能为空!").fadeIn().delay(3000).fadeOut();
      return false;
    }
    if(!yemail.match(/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/))
    {
      $(".newsletter-error").html("邮箱格式不正确!").fadeIn().delay(3000).fadeOut();
      return false;
    }
    var params = $('#myform').serialize(); //序列化表单的值
    $.ajax({
        url:'index.php?m=formguide&c=index&a=diyform', //后台处理程序
        type:'post',       //数据传送方式
        dataType:'json',   //接受数据格式
        data:params,       //要传送的数据
        success:Response//回传函数(这里是函数名字)
    });
}
function Response(resp) {
    if (resp.result === 'success') {
      $('.newsletter-success').html("提交成功!").fadeIn().delay(3000).fadeOut();
    } else if (resp.result === 'error') {
      $('.newsletter-error').html("提交失败!").fadeIn().delay(3000).fadeOut();
    }
}
</script>

二、表单控制器 phpcms/modules/formguide/index.php 中增加diyform()函数.

public function diyform(){
		if (!isset($_POST['fid']) || empty($_POST['fid'])) {
			$res['result'] = "error";
			exit;
		}
		$siteid = $_POST['sid'] ? intval($_POST['sid']) : 1;
		$formid = intval($_POST['fid']);
		$r = $this->db->get_one(array('modelid'=>$formid, 'siteid'=>$siteid, 'disabled'=>0), 'tablename, setting');
		if (!$r) {
			$res['result'] = "error";
			exit;
		}
		$setting = string2array($r['setting']);
		if ($setting['enabletime']) {
			if ($setting['starttime']>SYS_TIME || ($setting['endtime']+3600*24)<SYS_TIME) {
				$res['result'] = "error";
				exit;
			}
		}
		if (isset($_POST['dosubmit'])) {
			$tablename = 'form_'.$r['tablename'];
			$this->m_db->change_table($tablename);

			$data = array();
			require CACHE_MODEL_PATH.'formguide_input.class.php';
			$formguide_input = new formguide_input($formid);
			$data = new_addslashes($_POST['info']);
			$data = new_html_special_chars($data);
			$data = $formguide_input->get($data);
			$data['datetime'] = SYS_TIME;
			$data['ip'] = ip();
			$dataid = $this->m_db->insert($data, true);
			if ($dataid) {
				$this->db->update(array('items'=>'+=1'), array('modelid'=>$formid, 'siteid'=>$this->siteid));
			}
			$res['result'] = "success";
			echo json_encode($res);
		}
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大海哪蓝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值