1、 jQuery实现Ajax的方法:

除了$.ajax()方法以外,jQuery还提供了其他多种更简单的 Ajax 实现方法,如$.get()、$.post()、$.getJSON()、对象.load()等方法;

●$.get()方法:是 jQuery 封装的发送 HTTP GET 请求从服务器加载数据的Ajax方法;  

  语法:$.get( url [, data] [, success] [, dataType] );

       $.get()方法常用参数:

参  数

类  型

说      明

url

String

必选,规定将请求到哪个URL,(发送请求的地址)

data

PlainObject 或 String

可选,规定连同请求发送到服务器的数据

success

Function( PlainObject Date,String textStatus, jqXHR  jqxhr )

可选,请求成功后调用的函数;

参数Date:可选,服务器返回的结果数据;

参数textStatus:可选,描述请求状态的字符串;

参数jqxhr:可选,jqxhr是XMLHttpResult的超集;

如果指定了dataType,则必须提供此参数。如果没有事情需要处理,可以使用null或jQuery()空方法作占位符;

dataType

String

可选,预期服务器返回的数据类型,可用类型包括:XML、HTML、Script、JSON、JSONP、Text;

●$.post()方法:是 jQuery 封装的发送 HTTP POST请求从服务器加载数据的Ajax方法;

  语法:$.post( url [, data] [, success] [, dataType] );

      ◆$.post()方法常用的参数:

参  数

类  型

说      明

url

String

必选,规定将请求到哪个URL,(发送请求的地址)

data

PlainObject 或 String

可选,规定连同请求发送到服务器的数据

success

Function(PlainObject Date,String textStatus, jqXHR  jqxhr)

可选,请求成功后调用的函数;

参数Date:可选,服务器返回的结果数据;

参数textStatus:可选,描述请求状态的字符串;

参数jqxhr:可选,jqxhr是XMLHttpResult的超集;

如果指定了dataType,则必须提供此参数。但是可以使用null方法作占位符

dataType

String

预期服务器返回的数据类型,包括:XML、HTML、Script、JSON、JSONP、Text

●$.getJSON()方法:由于使用Ajax技术实现异步请求时,经常采用JSON数据格式作为相遇内容的载体,为了简化此种情况下的方法调用,jQuery提供了此方法;

     语法:$.getJSON( url [, data] [, success] );

       ◆$.getJSON()方法常用的参数:

参  数

类  型

说      明

url

String

必选,规定将请求到哪个URL,(发送请求的地址)

data

PlainObject 或 String

可选,规定连同请求发送到服务器的数据

success

Function( PlainObject  data, String  textStatus, jqXHR  jqxhr )

可选,请求成功后调用的函数;

参数Date:可选,服务器返回的结果数据;

参数textStatus:可选,描述请求状态的字符串;

参数jqxhr:可选,jqxhr是XMLHttpResult的超集;

       注意:$.getJSON()方法只能以GET方式发送请求;

●.load()方法:方对于通过 Ajax 请求直接加载 HTML 内容当前页面的使用场景,jQuery 也提供了 一个 . load()方法作为简易实现。该方法通过发送 Ajax 请求从

  服务器加载数据并把晌应的数据添加到指定元素中。

      语法:$( selector ).load( url [, data] [, complete] );

         ◆.load()方法常用的参数:

参  数

类  型

说      明

url

String

必选,规定将请求到哪个URL,(发送请求的地址)

data

PlainObject 或 String

可选,规定连同请求发送到服务器的数据

complete

Function(String  responseText, String  textStatus, jqXHR  jqxhr )

可选,对每个匹配的元素设置完内容后都会触发该函数;

参数responseText:可选,服务器返回的结果数据;

参数textStatus:可选,描述请求状态的字符串;

参数jqxhr:可选,jqxhr是XMLHttpResult的超集;

  ◆该方法默认使用 GET 方法发送请求,除非提供的 data 参数是一个对象 , 则使用 POST 方法发送;

  ◆该方法是最简单的从服务器获取数据的 Ajax 方法 , 它几乎与$ .get(url,data,success)方法等价;不同的是它不是全局函数,而是针对与选择器匹配的元素执行,并且它拥有匿名的回调函数,当求成功后,该方法自动将返回的数据设置为匹配元素的 HTML 内容

.load ()方法还可以仅加载远程文档的某个部分,通过 url 参数的特殊语法可以实现。url参数中可以通过空格连接决定加载内容的 jQuery 选择器,

  如以下代码:

    $ ("#result" ) . load (“article.html #starlet");

   jQuery 将会取回 article.html的内容,然后解析返回的文档,查找 id 为 target 的元素。该素连同其内容会被插入:id 为 result 的元素,所取回文档的其他部分则被丢弃;

注:$.get()、$.post()、$.getJSON()、对象.load()等常用 Ajax 方法都是基于$.ajax ()方法封装的,相比于$.ajax ()方法更加简洁、方便。通常情况下,对于一般的Ajax 功能需求使用以上 Ajax 方法即可满足(),如果需要更多的灵活性,可以使用$.ajax ()方法指定多参数;

基于表单数据的Ajax请求:

  ▲jQuery的.serializeArray()方法会从一组表单元素中检测有效控件,将其序列化成由 name 和 value()两个属性构成的 JSON 对象的数组。

    ◆其中有效控件的规则如下(检测一组表单元素中的有效控件):

      ★没有被禁用

      ★必须有name属性

      ★选中的checkbox或radio才是有效的

      ★只有触发提交事件的submit按钮才是有效的

      ★file元素不会被序列化

●$.param()

  ◆jQuery还提供了一种更简便的方式来实现将表单序列化成请求字符串的功能,即对表元素调用.serialize ()方法:$commentlnputs.serialize()方法,实际上,.serialize()方法内部就是使用 $.param()对.serializeArray()做了一个简单包装。对于不需要中间环节的情景,可以更简便地完成表单数据的序列化;

  ◆将由. serializeArray()生成的对象数组序列化成请求字符串的形式:

     语法:

    

2、使用 FastJSON生成 JSON 字符串:

FastJSON简介:FastJSON是一个性能很好的、由Java实现的JSON解析器和生成器,来自阿里巴巴,其代码托管在 GitHub 服务器上,在https://github.com/alibaba/fastjson/releases页面可以找到不同版本jar文件和源代码下载路径;FastJSON提供了把 Java 对象序列化成 JSON 字符串,以及将 JSON 字符串反序列化得到 Java对象的功能;

        

使用FastJSON  API:FastJSON  API的入口类是com.alibaba.fastjson.JSON,基本上常用的操作都可以通过该类的静态方法直接完成。

  ◆用于将 Java 对象序列化成 JSON 字符串的常用方法如下:

方      法

说      明

public static String toJSONString ( Object object )

将Java对象序列化成JSON字符串

public static String toJSONString (Object object, boolean prettyFormat )

prettyFormat为true时生成带格式的JSON字符串;

prettyFormat为false,则与toJSONString (Object object)相同;

public static String toJSONString ( Object object, SerializerFeature… features )

可以通过参数features指定更多序列化规则;

public static String toJSONStringWithDateFormat (Object object, String dateFormat, SerializerFeature… features )

可以通过参数dateFormat指定日期类型的输出格式;

   枚举类型 SerializerFeature 定义了多种序列化属性:

       ★常用属性如下:

    枚 举 值

说      明

QuoteFieldNames

输出 JSON 的字段名时加双引号,默认即使用

WriteMapNullValue

输出值为null的字段,默认不输出

WriteNullListAsEmpty

将值为null的List字段输出为[ ]

WriteNullStringAsEmpty

将值为null的String字段输出为“”

WriteNullNumberAsZero

将值为null的数值字段输出为0

WriteNullBooleanAsFalse

将值为null的Boolean字段输出为false

SkipTransientField

忽略transient字段,默认即忽略

PrettyFormat

格式化JSON字符串,默认不格式化

     eg:序列化时要包含包含值为 null 的字段,数值为 null  输出0,String 为 null 输出“”

          String  strJSON = JSON.toJSONString ( javaObject, SerializerFeature.WriteMapNullValue,SerializerFeature.WriteNullNumberAsZero, SerializerFeature.WriteNullStringAsEmpty );

3、 jQuery 让渡$操作符:

在 jQuery 中,"$“ 符号有着重要的作用;除了 iQuery , 还有其他一些 JavaScript 脚本库也使用'$' 符号,当项目开发中因为某些原因同时使用了 jQuery 和另一个同样使用’ $' 符号的脚本库,就会产生冲突。

      eg:下面代码Prototype的 $ 会覆盖jQuery的 $

    <script type="text/javascript" src="../js/jquery-1.12.4.min.js" />

    <script type="text/javascript" src="../js/prototype.js" />

  eg:下面的 jQuery的 $ 会覆盖Prototype的 $

    <script type="text/javascript" src="../js/prototype.js" />

    <script type="text/javascript" src="../js/jquery-1.12.4.min.js" />

为了使jQuery能够与其他同样使用”$”符号的脚本库共同工作, jQuery定义了jQuery.noConflict()方法,放弃对$的使用权,并可以通过返回值指定一个替代符号,以免与其他脚本库冲突;

     eg:jQuery.noConflict(); // 让渡$使用权,后续jQuery代码使用jQuery代替$

    jQuery( document ).ready( … );

   或者重新指定一个替代符号:

    var  $j = jQuery.noConflict(); // 让渡$使用权,并指定用 $j 代替$

    $j( document ).ready( … );

  ◆但是论采用哪种方式,都会改变 jQuery 的编码风格,不仅更加烦琐,而且对于已有 jQuery代码的重用也会产生不利影响;

      eg:建议使用如下代码:

           

4、总结:

 
 

 

JSP/Servlet开发——第十一章 Ajax交互扩展的更多相关文章

  1. JSP/Servlet开发——第七章 Servel基础

    1.Servlet简介: ●Servlet是一个符合特定规范的 JAVA 程序 , 是一个基于JAVA技术的Web组件. ●Servlet允许在服务器端,由Servlet容器所管理,用于处理客户端请求 ...

  2. 基于JSP+Servlet开发手机销售购物商城系统(前台+后台)源码

    基于JSP+Servlet开发手机销售购物商城系统(前台+后台) 开发环境: Windows操作系统 开发工具:Eclipse/MyEclipse+Jdk+Tomcat+MySQL数据库 运行效果图: ...

  3. 基于JSP+Servlet开发高校社团管理系统(前台+后台) 源码

    基于JSP+Servlet开发高校社团管理系统(前台+后台): 开发环境:    Windows操作系统 开发工具:Eclipse/MyEclipse+Jdk+Tomcat+MYSQL数据库 运行效果 ...

  4. [js开源组件开发]network异步请求ajax的扩展

    network异步请求ajax的扩展 在日常的应用中,你可能直接调用$.ajax是会有些问题的,比如说用户的重复点击,比如说我只希望它成功提交一次后就不能再提交,比如说我希望有个正在提交的loadin ...

  5. JSP/Servlet开发——第六章 JSP开发业务应用

    1. 大容量的数据显示的缺点: ●当数据量较多时,用户需要拖动页面才能浏览更多信息: ●数据定位不便: 2.分页显示: ●既能显示多条数据,又不需要拖动页面,是数据更加清晰直观,页面不再冗长,也不受数 ...

  6. JSP/Servlet开发——第五章 使用分层实现业务处理

    1.JNDI(Java Naming and Directory Interface)Java命名和目录接口: ●JNDI:是一个有关应用序设计的 API 为开发人员提供了查找和访问各种命名和目录服务 ...

  7. windows7_下Eclipse中部署tomcat7.0进行JSP+servlet开发

    环境:windows 7+EclipseJava EE IDE for Web Developers +tomcat 7.02 插件:tomcatPluginV321.zip(百度搜索下载即可) 一. ...

  8. Head First Servlets & JSP 学习笔记 第十一章 —— Web应用部署

    jar:java archive(java归档) war:web archive(web归档) war文件只是Web应用结构的一个快照,采用了一种更可移植的压缩形式(它实际上就是一个jar文件).建立 ...

  9. Python开发【十一章】:RabbitMQ队列

    RabbitMQ队列 rabbitMQ是消息队列:想想之前的我们学过队列queue:threading queue(线程queue,多个线程之间进行数据交互).进程queue(父进程与子进程进行交互或 ...

随机推荐

  1. MySQL主从复制与读写分离概念及架构分析

    1.MySQL主从复制入门 首先,我们看一个图: 影响MySQL-A数据库的操作,在数据库执行后,都会写入本地的日志系统A中. 假设,实时的将变化了的日志系统中的数据库事件操作,在MYSQL-A的33 ...

  2. 08_zookeeper的客户端工具curator_watcher

    [使用usingWatcher()] //两个usingWatcher的传入参数不同 public interface Watchable<T> { T watched(); T usin ...

  3. Spring Boot Async异步执行

    异步调用就是不用等待结果的返回就执行后面的逻辑,同步调用则需要等带结果再执行后面的逻辑. 通常我们使用异步操作都会去创建一个线程执行一段逻辑,然后把这个线程丢到线程池中去执行,代码如下: Execut ...

  4. 第三次Scrum编码冲刺

    1.小组成员 周 斌 舒 溢 许嘉荣 唐 浩 黄欣欣 廖帅元 刘洋江 薛思汝 2.个人在小组第三次冲刺的任务及其完成情况描述. 这次小组活动中我负责测试程序的实现情况,确保程序的每个模块都能正常运行, ...

  5. first-软件工程

    第一部分:结缘计算机 1.你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢?(必答) 之前高中班上男生特别喜欢软件这类的东西,每期电脑报都要买,我也会每期电脑报都会借来看,久而久之我就喜欢上 ...

  6. Tomcat中server.xml文件内各节点详解

    由于 Tomcat 基于 Java,实际上在各种 Linux 发行版里的配置方法都大同小异,只是我看见在 Arch Linux 环境里搭建 Tomcat 的文章比较少,所以在 Arch Linux 实 ...

  7. Struts学习-Hibernate2

    一. 1.配置 <!-- hibernate-core --> <dependency> <groupId>org.hibernate</groupId> ...

  8. java访问windows远端共享文件的方法

    没密码的,直接用url访问就可以了,跟本地文件相同. 有密码的,用smb. 远端需要开启smb. win10启动smb的方法:https://jingyan.baidu.com/article/47a ...

  9. July 24th 2017 Week 30th Monday

    The only limit to our realization of tomorrow will be our doubts of today. 实现明天理想的唯一障碍就是今天的疑虑. When ...

  10. postgres if ,when及判断表是否存在的sql编写

    判断表是否存在方法1: SELECT THEN END FROM ( select count(*) as cc from pg_class where relname = 'wo' --wo is ...