pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

YII2框架中使用yii.js實現(xiàn)的post請求

本文給大家介紹的是簡單分析下用yii2的yii\helpers\Html類和yii.js實現(xiàn)的post請求的方法,非常的簡單,有需要的小伙伴可以參考下

yii2提供了很多幫助類,比如Html、Url、Json等,可以很方便的實現(xiàn)一些功能,下面簡單說下這個Html。用yii2寫view時時經(jīng)常會用到它,今天在改寫一個頁面時又用到了它。它比較好用的地方就在于,它不僅僅是生成一個簡單的html標簽,結(jié)合yii2自己的靜態(tài)資源文件yii.js可以很方便的實現(xiàn)一個post請求。

yii2將這些功能都做好了封裝,只要在合適的地方調(diào)用它的方法就可以了,可以說yii2是個可以開箱即用的框架,你可以用它很快的實現(xiàn)一個需要的功能:比如在頁面中放置一個刪除按鈕,點擊按鈕發(fā)送post請求,彈出確認對話框。如果沒有yii\helpers\Html類和yii.js,那么你需要寫大量的js/jquery來實現(xiàn)這個功能。如果用yii2的話,下面的代碼就可以實現(xiàn):

 // html代碼
 <?= Html::a(
   '刪除',
   [
     'delete',
     'id' => $id,
   ],
   [
     'data' => [
       'confirm' => '你確定要刪除嗎?',
       'method' => 'post',
     ],
   ]
 )
 ?>
 // html代碼

它會在頁面中生成下面一段html代碼:

<a href="delete?id=1" rel="external nofollow" data-confirm="你確定要退出嗎?" data-method="post">刪除</a>

點擊這個按鈕會彈出對話框,確認刪除后會發(fā)送post請求。那么這個post請求是如何發(fā)送的呢?到現(xiàn)在為止可是一段js代碼都沒寫呢。

yii2框架隱藏了技術(shù)實現(xiàn)的細節(jié),post請求的實現(xiàn)在yii.js中。在yii.js中,定義了window.yii對象,并初始化了window.yii對象的initModule方法:

window.yii = (function ($) {
  var pub = {
    // 定義了處理事件的方法,比如下面這個:
    confirm: function (message, ok, cancel) {
      if (window.confirm(message)) {
        !ok || ok();
      } else {
        !cancel || cancel();
      }
    },


    handleAction: function ($e, event) {
      var $form = $e.attr('data-form') ? $('#' + $e.attr('data-form')) : $e.closest('form'),
      method = !$e.data('method') && $form ? $form.attr('method') : $e.data('method'),

      // 其他省略

    },

    // 其他省略
  };
  // 初始化模塊
  initModule: function (module) {
    if (module.isActive !== undefined && !module.isActive) {
      return;
    }
    if ($.isFunction(module.init)) {
      module.init();
    }
    $.each(module, function () {
      if ($.isPlainObject(this)) {
        pub.initModule(this);
      }
    });
  },

  // 初始化方法
  init: function () {
    initCsrfHandler();
    initRedirectHandler();
    initAssetFilters();
    initDataMethods();
  },

  return pub;
})(window.jQuery);

window.jQuery(function () {
  window.yii.initModule(window.yii);
});

其中上面的initDataMethods()會調(diào)用pub.handleAction方法:

  function initDataMethods() {
    var handler = function (event) {
      var $this = $(this),
        method = $this.data('method'),
        message = $this.data('confirm'),
        form = $this.data('form');

      if (method === undefined && message === undefined && form === undefined) {
        return true;
      }

      if (message !== undefined) {
        $.proxy(pub.confirm, this)(message, function () {
          pub.handleAction($this, event);
        });
      } else {
        pub.handleAction($this, event);
      }
      event.stopImmediatePropagation();
      return false;
    };

    // handle data-confirm and data-method for clickable and changeable elements
    $(document).on('click.yii', pub.clickableSelector, handler)
      .on('change.yii', pub.changeableSelector, handler);
  }

可以看到這個方法會獲取上面生成的a標簽的data屬性值,然后交給handlerAction來處理。handlerAction通過動態(tài)生成一個form來處理各種請求,最后通過觸發(fā)submit事件來提交。

// 其他省略

$form = $('<form/>', {method: method, action: action});
var target = $e.attr('target');
if (target) {
  $form.attr('target', target);
}
if (!/(get|post)/i.test(method)) {
  $form.append($('<input/>', {name: '_method', value: method, type: 'hidden'}));
  method = 'post';
  $form.attr('method', method);
}
if (/post/i.test(method)) {
  var csrfParam = pub.getCsrfParam();
  if (csrfParam) {
    $form.append($('<input/>', {name: csrfParam, value: pub.getCsrfToken(), type: 'hidden'}));
  }
}
$form.hide().appendTo('body');

// 其他省略

PS:做項目用框架很方便,但是框架用的久了,就容易把基本的技術(shù)給忘掉了。還是要打好基礎(chǔ)呀,這樣不管用什么框架都不至于用得云里霧里的。

【網(wǎng)站聲明】本站除付費源碼經(jīng)過測試外,其他素材未做測試,不保證完整性,網(wǎng)站上部分源碼僅限學習交流,請勿用于商業(yè)用途。如損害你的權(quán)益請聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

本篇文章主要介紹了yii2組件之下拉框帶搜索功能的示例代碼(yii-select2),具有一定的參考價值,有興趣的可以了解一下
本篇文章主要主要介紹了yii2中使用webuploader實現(xiàn)圖片上傳的實戰(zhàn)項目,具有一定的參考價值,有興趣的同學可以了解一下
本篇文章主要介紹了淺談Yii2 樂觀鎖與悲觀鎖原理,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
這篇文章主要介紹了深入理解Yii2.0樂觀鎖與悲觀鎖的原理與使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
下面小編就為大家?guī)硪黄薷膟ii2.0用戶登錄使用的user表為其它的表實現(xiàn)方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
因為某種原因,不想用yii自帶的user表,想用自己建的admin數(shù)據(jù)庫表,怎么修改呢?下面小編給大家介紹下修改yii2.0自帶的user表為其它的表的方法,一起看看吧
主站蜘蛛池模板: 【直乐】河北石家庄脊柱侧弯医院_治疗椎间盘突出哪家医院好_骨科脊柱外科专业医院_治疗抽动症/关节病骨伤权威医院|排行-直乐矫形中医医院 | 重庆私家花园设计-别墅花园-庭院-景观设计-重庆彩木园林建设有限公司 | 除甲醛公司-甲醛检测治理-杭州创绿家环保科技有限公司-室内空气净化十大品牌 | UV固化机_UVLED光固化机_UV干燥机生产厂家-上海冠顶公司专业生产UV固化机设备 | 海日牌清洗剂-打造带电清洗剂、工业清洗剂等清洗剂国内一线品牌 海外整合营销-独立站营销-社交媒体运营_广州甲壳虫跨境网络服务 | 智能风向风速仪,风速告警仪,数字温湿仪,综合气象仪(气象五要素)-上海风云气象仪器有限公司 | PTFE接头|聚四氟乙烯螺丝|阀门|薄膜|消解罐|聚四氟乙烯球-嘉兴市方圆氟塑制品有限公司 | 手术示教系统-数字化手术室系统-林之硕医疗云智能视频平台 | 振动筛-交叉筛-螺旋筛-滚轴筛-正弦筛-方形摇摆筛「新乡振动筛厂家」 | 睿婕轻钢别墅_钢结构别墅_厂家设计施工报价 | 医用空气消毒机-医用管路消毒机-工作服消毒柜-成都三康王 | 减速机_上海宜嘉减速机| 钢衬玻璃厂家,钢衬玻璃管道 -山东东兴扬防腐设备有限公司 | uv机-uv灯-uvled光固化机-生产厂家-蓝盾机电 | 质检报告_CE认证_FCC认证_SRRC认证_PSE认证_第三方检测机构-深圳市环测威检测技术有限公司 | 济南办公室装修-厂房装修-商铺装修-工装公司-山东鲁工装饰设计 | EPK超声波测厚仪,德国EPK测厚仪维修-上海树信仪器仪表有限公司 | 国际船舶网 - 船厂、船舶、造船、船舶设备、航运及海洋工程等相关行业综合信息平台 | 球形钽粉_球形钨粉_纳米粉末_难熔金属粉末-广东银纳官网 | 砖机托板价格|免烧砖托板|空心砖托板厂家_山东宏升砖机托板厂 | 领袖户外_深度旅游、摄影旅游、小团慢旅行、驴友网 | 天命文免费算命堂_自助算命_自由算命系统_长文周易 | 铜镍-康铜-锰铜-电阻合金-NC003 - 杭州兴宇合金有限公司 | crm客户关系管理系统,销售管理系统,crm系统,在线crm,移动crm系统 - 爱客crm | 对辊式破碎机-对辊制砂机-双辊-双齿辊破碎机-巩义市裕顺机械制造有限公司 | 渣土车电机,太阳能跟踪器电机,蜗轮蜗杆减速电机厂家-淄博传强电机 | 家用净水器代理批发加盟_净水机招商代理_全屋净水器定制品牌_【劳伦斯官网】 | 气体热式流量计-定量控制流量计(空气流量计厂家)-湖北南控仪表科技有限公司 | 耐腐蚀泵,耐腐蚀真空泵,玻璃钢真空泵-淄博华舜耐腐蚀真空泵有限公司 | 喷涂流水线,涂装流水线,喷漆流水线-山东天意设备科技有限公司 | 菲希尔X射线测厚仪-菲希尔库伦法测厚仪-无锡骏展仪器有限责任公司 | 光栅尺_Magnescale探规_磁栅尺_笔式位移传感器_苏州德美达 | 昆明化妆培训-纹绣美甲-美容美牙培训-昆明博澜培训学校 | 英国雷迪地下管线探测仪-雷迪RD8100管线仪-多功能数字听漏仪-北京迪瑞进创科技有限公司 | 找果网 | 苹果手机找回方法,苹果iPhone手机丢了找回,认准找果网! | 电脑刺绣_绣花厂家_绣花章仔_织唛厂家-[源欣刺绣]潮牌刺绣打版定制绣花加工厂家 | 同步带轮_同步带_同步轮_iHF合发齿轮厂家-深圳市合发齿轮机械有限公司 | 全自动真空上料机_粉末真空上料机_气动真空上料机-南京奥威环保科技设备有限公司 | 高压互感器,电流互感器,电压互感器-上海鄂互电气科技有限公司 | 大通天成企业资质代办_承装修试电力设施许可证_增值电信业务经营许可证_无人机运营合格证_广播电视节目制作许可证 | 安全光栅|射频导纳物位开关|音叉料位计|雷达液位计|两级跑偏开关|双向拉绳开关-山东卓信机械有限公司 |