Yii2表单事件之Ajax提交实现方法


Posted in PHP onMay 04, 2017

本文实例讲述了Yii2表单事件之Ajax提交实现方法。分享给大家供大家参考,具体如下:

前言

Yii2 现在使用 JS 都必须要注册代码了。

要实现 Ajax 提交,有两种方法。一是直接在 ActiveForm 调用 beforeSubmit 参数,但是个人认为这样没有很好的把 JS 和 HTML 分开,所以我们这篇文章主要介绍第二种方法 - 外部写 JS 方法。

表单部分

<?php $form = ActiveForm::begin([
  'id'   => $model->formName(),
  'action' => ['/apitools/default/index']
]); ?>

Ajax

<?php
$js = <<<JS
// get the form id and set the event
$('form#{$model->formName()}').on('beforeSubmit', function(e) {
  var \$form = $(this);
  // do whatever here, see the parameter \$form? is a jQuery Element to your form
}).on('submit', function(e){
  e.preventDefault();
});
JS;
$this->registerJs($js);

如果你使用了 JsBlock,你还可以这样写:

<?php JsBlock::begin() ?>
  <script>
    $(function () {
      jQuery('form#apitool').on('beforeSubmit', function (e) {
        var $form = $(this);
        $.ajax({
          url: $form.attr('action'),
          type: 'post',
          data: $form.serialize(),
          success: function (data) {
            // do something
          }
        });
      }).on('submit', function (e) {
        e.preventDefault();
      });
  </script>
<?php JsBlock::end() ?>

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP得到某段时间区间的时间戳 php定时任务
Apr 12 PHP
PHP实现邮件群发的源码
Jun 18 PHP
PHP父类调用子类方法的代码例子
Apr 09 PHP
PHP+Ajax检测用户名或邮件注册时是否已经存在实例教程
Aug 23 PHP
一个比较不错的PHP日历类分享
Nov 18 PHP
从wamp到xampp的升级之路
Apr 08 PHP
weiphp微信公众平台授权设置
Jan 04 PHP
Yii2实现让关联字段支持搜索功能的方法
Aug 10 PHP
php获取当前url地址的方法小结
Jan 10 PHP
centos下file_put_contents()无法写入文件的原因及解决方法
Apr 01 PHP
PHP count()函数讲解
Feb 03 PHP
PHP实现通过二维数组键值获取一维键名操作示例
Oct 11 PHP
PHP经典实用正则表达式小结
May 04 #PHP
PHP实现的简单异常处理类示例
May 04 #PHP
PHP基于新浪IP库获取IP详细地址的方法
May 04 #PHP
PHP 无限级分类
May 04 #PHP
PHP实现中国公民身份证号码有效性验证示例代码
May 03 #PHP
PHP基于Redis消息队列实现发布微博的方法
May 03 #PHP
Laravel5中Cookie的使用详解
May 03 #PHP
You might like
php正则校验用户名介绍
2008/07/19 PHP
php socket方式提交的post详解
2008/07/19 PHP
discuz程序的PHP加密函数原理分析
2011/08/05 PHP
解析左右值无限分类的实现算法
2013/06/20 PHP
PHP判断文章里是否有图片的简单方法
2014/07/26 PHP
PHP获得数组交集与差集的方法
2015/06/10 PHP
详解thinkphp5+swoole实现异步邮件群发(SMTP方式)
2017/10/13 PHP
extjs 学习笔记 四 带分页的grid
2009/10/20 Javascript
JSP中使用JavaScript动态插入删除输入框实现代码
2014/06/13 Javascript
js继承call()和apply()方法总结
2014/12/08 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
2015/01/13 Javascript
jQuery中 delegate使用的问题
2015/07/03 Javascript
Node.js巧妙实现Web应用代码热更新
2015/10/22 Javascript
原生js实现节日时间倒计时功能
2017/01/18 Javascript
大白话讲解JavaScript的Promise
2017/04/06 Javascript
jQuery实现右侧抽屉式在线客服功能
2017/12/25 jQuery
LayUI动态设置checkbox不显示的解决方法
2019/09/02 Javascript
vue2.x 对象劫持的原理实现
2020/04/19 Javascript
python+mysql实现简单的web程序
2014/09/11 Python
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
2015/03/19 Python
在Django的URLconf中使用命名组的方法
2015/07/18 Python
Python实现找出数组中第2大数字的方法示例
2018/03/26 Python
Jupyter notebook远程访问服务器的方法
2018/05/24 Python
Python 使用多属性来进行排序
2019/09/01 Python
python 实现dict转json并保存文件
2019/12/05 Python
纯CSS3实现的8种Loading动画效果
2014/07/05 HTML / CSS
移动端Html5页面生成图片解决方案
2018/08/07 HTML / CSS
数控技术专业推荐信
2013/11/01 职场文书
应届生财务会计求职信
2013/11/05 职场文书
学雷锋先进个人事迹
2014/05/26 职场文书
2015年组织委员工作总结
2015/04/23 职场文书
2016国培研修心得体会
2016/01/08 职场文书
用Python实现Newton插值法
2021/04/17 Python
springboot临时文件存储目录配置方式
2021/07/01 Java/Android
关于Vue中的options选项
2022/03/22 Vue.js
Python自动化实战之接口请求的实现
2022/05/30 Python