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自定义函数收代码
Aug 01 PHP
php查看当前Session的ID实例
Mar 16 PHP
php如何连接sql server
Oct 16 PHP
Symfony2实现从数据库获取数据的方法小结
Mar 18 PHP
php实现当前页面点击下载文件的简单方法
Sep 22 PHP
利用php实现一周之内自动登录存储机制(cookie、session、localStorage)
Oct 31 PHP
Yii核心验证器api详解
Nov 23 PHP
记录一次排查PHP脚本执行卡住的问题
Dec 27 PHP
php脚本守护进程原理与实现方法详解
Jul 20 PHP
PHP使用Session实现上传进度功能详解
Aug 06 PHP
Laravel5.5 数据库迁移:创建表与修改表示例
Oct 23 PHP
PHP安全之register_globals的on和off的区别
Jul 23 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.ini实现Mysql导入数据库文件最大限制的修改方法
2007/12/11 PHP
php数组应用之比较两个时间的相减排序
2008/08/18 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
2013/10/10 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
2015/07/31 PHP
php处理静态页面:页面设置缓存时间实例
2017/06/22 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
jquery focus(fn),blur(fn)方法实例代码
2011/12/16 Javascript
javascript实现可改变滚动方向的无缝滚动实例
2013/06/17 Javascript
7个有用的jQuery代码片段分享
2015/05/19 Javascript
JS实现的表格行上下移动操作示例
2016/08/03 Javascript
AngularJS控制器详解及示例代码
2016/08/16 Javascript
AngularJS入门教程之路由与多视图详解
2016/08/19 Javascript
AngularJS解决ng界面长表达式(ui-set)的方法分析
2016/11/07 Javascript
关于js对textarea换行符的处理方法浅析
2018/08/03 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
2018/08/14 Javascript
jQuery+vue.js实现的多选下拉列表功能示例
2019/01/15 jQuery
ES6顶层对象、global对象实例分析
2019/06/14 Javascript
微信小程序 行的删除和增加操作实现详解
2019/09/29 Javascript
uni-app微信小程序登录授权的实现
2020/05/22 Javascript
jQuery 实现DOM元素拖拽交换位置的实例代码
2020/07/14 jQuery
vue 遮罩层阻止默认滚动事件操作
2020/07/28 Javascript
python 正则式 概述及常用字符
2009/05/07 Python
python实现的简单文本类游戏实例
2015/04/28 Python
django输出html内容的实例
2018/05/27 Python
Python3实现将本地JSON大数据文件写入MySQL数据库的方法
2018/06/13 Python
分享8个非常流行的 Python 可视化工具包
2019/06/05 Python
基于python判断目录或者文件代码实例
2019/11/29 Python
python3爬虫中异步协程的用法
2020/07/10 Python
HTML5 Canvas中绘制椭圆的4种方法
2015/04/24 HTML / CSS
美国领先的家庭智能音响系统品牌:Sonos
2018/07/20 全球购物
西雅图的买手店:Totokaelo
2019/10/19 全球购物
Columbia Sportswear法国官网:全球户外品牌
2020/09/25 全球购物
优秀毕业生求职信
2014/06/05 职场文书
入伍志愿书怎么写?
2019/07/19 职场文书
MySQL8.0.18配置多主一从
2021/06/21 MySQL
python在package下继续嵌套一个package
2022/04/14 Python