迷路的哈士奇

迷路的哈士奇 关注TA

迷路的哈士奇

该文章投稿至Nemo社区   杂谈随笔  板块 复制链接


关于最近练习项目的小小收获

发布于 2016/01/16 13:53 829浏览 2回复 1,777

最近忙一个小项目,关于云笔记,比较忙,所以关于项目描述就先隔着,等做完整个项目练习以后再说。

整理了几个笔记,希望对初学者有帮助。由于自己也是初学者,所以如果有叙述有误的,还望指出

Q1:如果你的web页面有用到异步ajax请求,那么一定要注意对于你的事件的绑定。

    比如你绑定的事件对象是一个li,那么平时是"$("#id").click(function(){//方法体})",这个方法就不一定管用了。因为你的异步请求,有可能是页面代码已经运行完了,但是异步请求的页面li还没有从服务端回来,所以就会绑定失效。你的这function里面的代码就是失效

解决办法:用"$("元素选择器").on("click","#id",function(){})",这个可以避免异步请求导致绑定失效的问题.


Q2:关于页面上出现页面编辑器的<input/>框的时候,获取和写入值都不能直接用常规的".val()",这个对编辑器的框是无效的。

解决方法:

        um=UM.getEditor("myEditor")//获取编辑器框"myEditor"是你的编辑器框的id
        um.setContent(xxx)//写入数据

        um.getContent(xxx)//读取数据


Q3:在项目中,我们要在一个提示框中插入一个<select><option></option></select>,在option里面插入笔记列表。暂时有2个方案,1,直接从页面内获取笔记列表的li,2.从数据库获取笔记本列表。结果出现2个不同的结果,方案1获取失败,方案2获取成功。原因后来才知道:1.页面ajax异步请求,直接从页面获取笔记列表,当获取完之前,方法就提前执行完毕,导致不能写入option。2可以成功是因为从服务端获取列表消耗的时间比较长(片段不好描述,以后补上)

解决方法:1.设置ajax全局同步后,使用post和get就是同步了(效率低)

            2.不使用post,get的ajax请求,直接用$.ajax()在里面设置参数

        (Ajax请求默认的都是异步的
    如果想同步 async设置为false就可以(默认是true)

    var html = $.ajax({
      url: "some.php",
      async: false
    }).responseText; 

    或者在全局设置Ajax属性
    $.ajaxSetup({
      async: false
      });
    再用post,get就是同步的了


最近每天都是ajax的世界。。。简单粗暴。ajax用法单一,更多的是获取数据的逻辑问题。

点赞(0)
点了个评