backbone 與 ajax


  前一段時間研究一下backbone.js 框架,之所以研究backbone 1.我們小組用的mvc 還是有點粗糙,寫法只是形式上的。想找一個mvc 的框架 2.很多網友在用或提到過backbone.js。研究一段時間,發現資料很少,英文文檔看起來費勁,搜索很多時候搜不到,搜到一些demo質量很低下,js大牛司徒正美居然說他很難維護,這些都深深打擊了我脆弱和善良的小心靈。這幾天又深深反省一下,既然這么人在用,就一定有他的優點!只有親自研究過,才能知道優劣 。

  我們這邊的數據主要是ajax,backbone怎么發ajax 成為了重點。backbone.sync  這個名字很坑爹,sync 還以為是同步,其實發的都是異步,用的是$.ajax. backbone 框架都是用sync來發ajax。那么model怎么發ajax呢?

  一開始,網上搜了一下,亂七八糟的東西,沒找到答案,后來和周大師討論一下,說重寫!重寫我感覺很別扭,那我用框架意義不怎么大了。幸好,backbone的代碼不是很多,自己研究了一下backbone.sync 這個函數。自己寫了demo抓包調試,下面說一下典型的 model save 提交到服務器 ! 其他的比較簡單

  1.首先一定設置

   Backbone.emulateJSON = true 

  這個設置使  contentType: "application/x-www-form-urlencoded",不設置會為  contentType: "application/json

 2.model 提交數據要用到可以用其save()方法,看一下save 方法

save: function(key, val, options) {
      var attrs, success, method, xhr, attributes = this.attributes;

      // Handle both `"key", value` and `{key: value}` -style arguments.
      if (key == null || typeof key === 'object') {
        attrs = key;
        options = val;
      } else {
        (attrs = {})[key] = val;
      }
      /**
       *以下省略
       */     
    },

三個參數,參數key 要設置為 null, 如果設置為null,contentType:"application/json  這種方式,后端php 通過$_POST 接收不到任何參數。可以像下面那樣設置

this.model.save(null,{data:{'name':'liuzng','test':'cao'},
                              beforeSend:function(){alert(2)},
                              success:function(model, response, options) {console.log(response)}
                              });    


這樣就可以提交 第二參數可以寫ajax選項。可以像ajax一樣提交

ps : backbone.sync 這個函數只是稍微處理一些東西,本質仍是$.ajax!你也可以看看源碼

正在學習,歡迎拍磚!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM