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!你也可以看看源码

正在学习,欢迎拍砖!

原文地址:https://www.cnblogs.com/liuzhang/p/2920974.html