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

    正在学习,欢迎拍砖!

  • 相关阅读:
    JDK代理(必须代理类要实现一个接口)
    Spring整合jdbc
    Python 之正则匹配
    Spark ML 之 LR逻辑回归实现排序
    Spark 之 读取配置连接Mysql和上传到HDFS
    Spark ML 之 推荐算法项目(上)
    Spark ML 之 推荐算法项目(下)
    Spark ML 之 ALS内存溢出的解决办法
    Spark ML 之 基于协同过滤的召回算法
    Spark ML 特征处理类之 VectorAssembler 向量装配转换器/VectorIndexer
  • 原文地址:https://www.cnblogs.com/liuzhang/p/2920974.html
Copyright © 2020-2023  润新知