ajax级联原理相关知识
-
Ajax二级(多级)联动实现原理分析二级联动效果开发中经常会遇到一些二级联动甚至多级联动,一二级菜单,省市县,公司团队部门等等实现思路一级菜单就是个多option 的select下拉框,option可以来自页面自定义或则数据库二级菜单当一级菜单选中后,去查询数据库,查询到对应的二级菜单的内容,使用apend()添加到二级菜单的位置,一二级菜单就实现了联动,下面以部门和部门人员的联动为例介绍下实际实现onchange="showDept(this.value)"一级菜单选择改变触发请求 function showDept(obj) { va
-
深入理解Ajax原理概念ajax 的全称是AsynchronousJavaScript and XML,其中,Asynchronous 是异步的意思,它有别于传统web开发中采用的同步的方式。理解同步异步异步传输是面向字符的传输,它的单位是字符;而同步传输是面向比特的传输,它的单位是桢,它传输的时候要求接受方和发送方的时钟是保持一致的。举个例子来说同步和异步,同步就好像我们买楼一次性支付,而异步就是买楼分期付款。所以当我们把这种生活中的概念化解释转移到理解Ajax异步上来就发现,它是通过这样一种异步的方式来让用户更加收益,也就是说可以让用户的有更好的体验性。其实这也是Ajax的意义所在。通过分析XmlHttpRequest来理解Ajax的原理Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。这其中最关键的一步就是从服务器获得请求数据。要清楚这个过程和原理,我们必须对XMLHttpRequest有所了解。XMLHttpRequest
-
原生javascript封装ajax原文见martin的博客最近重新看《javascript高级程序设计》,突然看到了ajax,想起来之前学习的各种坑,又想着结合最近学习的模块化编程、面向对象式编程,所以用原生的js采用面向对象的设计思路对ajax进行了一个封装,同时,想起之前学习ajax的最大困难:没有服务器端代码,不好测试,所以这次用原生node写了一个简单的服务器,用于处理ajax的测试。综上,本文主要提供了以下几个点:采用面向对象的方法用原生js封装了一个ajax类,更便捷的实现ajax通信提供了一个Node写的服务器端的代码,可以用来测试ajax提供了一个demo,服务器端以及浏览器端的代码来测试ajax类仓库在这里,服务器,客户端的代码都在里面,也有一些测试的说明。ajax实现原理ajax是一项伟大的技术,其很好的解决了传统浏览器一言不合就重新发送整个页面,速度慢,用户体验差的问题。它是一个获取资源的手段,可以在不进行整体刷新的情况下进行局部dom修改,速度快,用户体验好。实现的原理主要是基于一个类,XMLHttpRequest(
-
Ajax原理一篇就够了一、什么是Ajax Ajax(Asynchronous JavaScript and XML的缩写)是一种异步请求数据的web开发技术,对于改善用户的体验和页面性能很有帮助。简单地说,在不需要重新刷新页面的情况下,Ajax 通过异步请求加载后台数据,并在网页上呈现出来。常见运用场景有表单验证是否登入成功、百度搜索下拉框提示和快递单号查询等等。 Ajax目的:提高用户体验,较少网络数据的传输量 二、Ajax原理是什么 在解释Ajax原理之前,我们不妨先举个“领导想找小李汇报一下工作”例子,领导想找小李问点事,就
ajax级联原理相关课程
ajax级联原理相关教程
- 6.1 配置 ajax function ajaxError(){ alert('ajax error');}function ajaxSuccess(result){ if (result.error) { alert('操作失败'); return; } location.reload();}在 RESTful 架构中,客户端使用 ajax 技术请求服务端的服务。当 ajax 请求失败时,调用 ajaxError,提示用户 ajax 请求服务失败;当 ajax 请求成功时,调用 ajaxSuccess,提示用户 ajax 请求服务成功。在网站的首页展示所有的联系人,当新增、修改、删除联系人后,需要刷新首页面,因此,在第 12 行,当 ajax 调用服务成功后,需要 location.reload() 刷新页面,从服务端重新加载所有的联系人。
- 5. Ajax 的工作原理 Ajax 相当于用户端和服务端的一个中间层,用来处理异步化的数据交互。这里涉及到两个重要的点:XMLHttpRequest 和 异步。先讲异步,异步指的是用户无需等待,异步操作不会阻碍当前用户的活动。在早期,对于我们的 Web 交互,每次用户发送请求,都会阻塞当前活动,进行页面重载。而在服务器响应请求之前,浏览器只能是一片空白。体验极其差!然而,使用异步就能够解决这个问题,浏览器端发送请求,但是不会阻塞用户当前的活动,也不会丢弃当前页面,数据一样可以进行交互和刷新。体验效果极佳!另一个 XMLHttpRequest 可以说是 Ajax 的核心技术。使用 XMLHttpRequest ,我们可以通过 JavaScript 向服务端发送请求,并且获取和处理服务端返回的数据,却不会阻塞用户活动,而仅仅只是局部动态更新,更加不会导致 web 页面频繁重载。Ajax 工作过程大致如下:JavaScript 通过 XMLHttpRequest 向后端发起异步请求,可以是 get 或者 post 等;服务端接收请求,处理并返回数据;JavaScript 通过 XMLHttpRequest 获取并解析服务端返回的数据内容;JavaScript 通过动态更新 DOM 或者执行其他操作。
- 2.5 级联操作 Hibernate 提供的级联操作带来了很多方便。但是,特别是在双向关联映射的情况下,不要把两边的级联操作全部打开,否则会把不该删除的数据删除掉。测试数据被级联删除倒无所谓,真实数据被删除了,可能就欲哭无门。
- 3. 级联删除 前面讲解双向一对多的时候,也提到了级联删除。最大的印象就是,如果双方都打开了级联删除,删除时就如同推倒了多米诺骨牌的第一张牌,整个数据链都会删除。多对多关联比一对多关联多了一张中间表,在进行级联删除的时候,到底会发生什么事情?在此也有必要拿出来说一说。为了不让事情的发展如山崩一样不可控制,先打开学生类的级联操作功能:private Set<Course> courses=new HashSet<Course>(); @ManyToMany(targetEntity = Course.class,cascade=CascadeType.ALL) @JoinTable(name = "score", joinColumns = @JoinColumn(name = "stuId", referencedColumnName = "stuId"), inverseJoinColumns = @JoinColumn(name = "courseId", referencedColumnName = "courseId")) public Set<Course> getCourses() { return courses; }这里使用 CascadeType.ALL。来一段测试实例,删除刚才添加的 HibernateTemplate 同学。他会说我好悲惨,才进来没有多久。HibernateTemplate<Student> hibernateTemplate = new HibernateTemplate<Student>(); hibernateTemplate.template(new Notify<Student>() { @Override public Student action(Session session) { // 查询学生 Student student =(Student)session.get(Student.class, new Integer(23)); session.delete(student); return null; } });无惊无喜,一切按照预先的设想进行。删除学生时,中间表中与此学生有关联的信息,也就是说此学生选修的课程信息也自动被删除了。但是,会有一个想法,如果删除课程,则中间表中记录的与此课程有关的信息是否会自动删除呢?OK!开始行动之前,可别忘记在课程类中打开级联操作选项:嘿嘿!现在两边的级联操作功能都已经打开。private Set<Student> students=new HashSet<Student>(); @ManyToMany(targetEntity = Student.class, mappedBy = "courses",cascade=CascadeType.ALL) public Set<Student> getStudents() { return students; }打开后,执行删除 C 课程的实例,谁让 C 不好学了。HibernateTemplate<Course> hibernateTemplate = new HibernateTemplate<Course>(); hibernateTemplate.template(new Notify<Course>() { @Override public Course action(Session session) { // 查询学生 Course course =(Course)session.get(Course.class, new Integer(2)); session.delete(course); return null; } });这只是一个很简单的代码,但是却发生如雪崩一样的事件。到底发生了什么事情?大家进入 MySql 看看就知道了。3张表中空空如也,所有数据都没有了。就如同前面讲解一对多的级联删除一样。同样适用于多对多关联映射之中。因两边都已经打开了级联,删除操作如同无法控制的坏情绪,删除课程时,以中间表为连接,反复来往于三张表,把相关信息全部删除。所以,使用级联时一定要小心,否则,小心脏真的有点受不了。
- 4. 一对多关联映射中的级联操作 什么是级联操作?关系型数据库中由主外键维系的两张表,具有主从关系。如学生表和班级表,班级班是主表,学生表是从表。类似于删除某一个班级的信息,则需要先删除所在班的学生信息,再删除班级信息,这个操作就是级联操作。所谓级联操作,指操作一张表时,是否会牵连到与之有关联的其它表。现在,咱们是使用 Hibernate 进行数据操作,不可能还要劳驾自己亲力亲为吧。只需要做些简单配置,就可以让 Hibernate 自动做级联操作。进入班级类,修改代码如下:@OneToMany(targetEntity=Student.class,mappedBy="classRoom",cascade=CascadeType.REMOVE) public Set<Student> getStudents() { return students; }很简单,只需要使用 @OneToMany 的 cascade 属性,就能让 Hibernate 明白如何做级联操作。默认情况下,没有级联效应。cascade 是一个枚举类型:public enum CascadeType { ALL, PERSIST, MERGE, REMOVE, REFRESH, DETACH}ALL: 级联所有操作;PERSIST: 级联新增;MERGE: 级联更新或者新增;REMOVE: 级联删除;REFRESH: 级联刷新;DETACH: 级联分离。测试删除班级实例:HibernateTemplate<ClassRoom> hibernateTemplate = new HibernateTemplate<ClassRoom>(); hibernateTemplate.template(new Notify<ClassRoom>() { @Override public ClassRoom action(Session session) { ClassRoom classRoom=(ClassRoom)session.get(ClassRoom.class, new Integer(1)); session.delete(classRoom); return null; } });如果不添加 cascade 相关说明,因为有学生引用班级信息,班级信息是不能被删除的。添加后再测试,查看表中内容:班级以及班级所在学生信息全部删除!删除班级时能级联删除学生,反过来,删除学生能删除班级吗?想法很好,实践是检验真理的唯一手段,学生类中修改成如下代码:@ManyToOne(targetEntity=ClassRoom.class,cascade=CascadeType.REMOVE) @JoinColumn(name="classRoomId") public ClassRoom getClassRoom() { return classRoom; }测试实例:HibernateTemplate<Student> hibernateTemplate = new HibernateTemplate<Student>(); hibernateTemplate.template(new Notify<Student>() { @Override public Student action(Session session) { Student stu=(Student)session.get(Student.class, new Integer(2)); session.delete(stu); return stu; } });结果很残酷!学生被删除了,班级也被删除了!级联级联,只要设置了级联,不管删除学生还是班级,只要在对应表中有引用关系的数据就会被删除。现在,学生类、班级类中的级联删除都打开了。如果对下面情形的数据(编号 1、2 的学生的班级编号都为 1)进行删除操作,则会发生什么事情?数据库中的数据如下:测试删除编号为 1 的学生:HibernateTemplate<Student> hibernateTemplate = new HibernateTemplate<Student>(); hibernateTemplate.template(new Notify<Student>() { @Override public Student action(Session session) { Student stu=(Student)session.get(Student.class, new Integer(1)); session.delete(stu); return stu; } });进入 MySql,查看一下:天呀!这是级联还是株连呀,太让人后怕,数据都没有了。删除学生时,会级联删除和学生有关的班级,班级删除时,又会查看学生表中是否还存在与班级有关联的学生,有,则一刀下去,连根拔起。Hibernate 有点刹不住车,产生了级联连锁反应。针对上面的测试,如果班级表的级联关闭,执行测试代码,请问结果又会怎样?本节课程,讲解了级联删除,级联添加的内容留到下节课继续展开。
- 6. Ajax 的优点 Ajax 技术的优势有如下几点:无刷新更新页面。抛弃了早期重载页面的方式,加快了请求的速度,提升了用户体验。减少客户端的内存消耗。采用更加轻量的数据提取做法,避免了客户端大量的冗余请求,减少了不必要的内存消耗。将部分传统技术中原本在服务端的工作转移到客户端来进行。 使用Ajax,一些数据的处理能够在客户端进行,减轻了服务端的压力。兼容性极好,几乎所有的浏览器都支持。不需要额外插件或者虚拟机即可使用。当然,Ajax 带来的最大的优势还是通过异步请求和处理数据的方式,取代了通过原始 Form 表单提交来更新数据及页面的方式,从而使得我们的 Web 应用成为了可能。
ajax级联原理相关搜索
-
ajax
android
a href
abap
abap开发
abort
absolutelayout
abstractmethoderror
abstracttablemodel
accept
access
access教程
accordion
accumulate
acess
action
actionform
actionlistener
activity
addeventlistener