JQuery

Jquery实现异步调用

通过 HTTP 请求加载远程数据

JQuery 底层 AJAX 实现。简单易用的高层实现见 $.get, $.post 等。$.ajax() 返回其创建的 XMLHttpRequest 对象。大多数情况下你无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活性。

最简单的情况下,$.ajax()可以不带任何参数直接使用。

注意,所有的选项都可以通过$.ajaxSetup()函数来全局设置。

  • 回调函数

如果要处理$.ajax()得到的数据,则需要使用回调函数。beforeSend、error、dataFilter、success、complete。

  • beforeSend 在发送请求之前调用,并且传入一个XMLHttpRequest作为参数。
  • error 在请求出错时调用。传入XMLHttpRequest对象,描述错误类型的字符串以及一个异常对象(如果有的话)
  • dataFilter 在请求成功之后调用。传入返回的数据以及"dataType"参数的值。并且必须返回新的数据(可能是处理过的)传递给success回调函数。
  • success 当请求之后调用。传入返回后的数据,以及包含成功代码的字符串。
  • complete 当请求完成之后调用这个函数,无论成功或失败。传入XMLHttpRequest对象,以及一个包含成功或错误代码的字符串。
  • 数据类型

$.ajax()函数依赖服务器提供的信息来处理返回的数据。如果服务器报告说返回的数据是XML,那么返回的结果就可以用普通的XML方法或者jQuery的选择器来遍历。如果见得到其他类型,比如HTML,则数据就以文本形式来对待。

通过dataType选项还可以指定其他不同数据处理方式。除了单纯的XML,还可以指定 html、json、jsonp、script或者text。

其中,text和xml类型返回的数据不会经过处理。数据仅仅简单的将XMLHttpRequest的responseText或responseHTML属性传递给success回调函数,

'''注意''',我们必须确保网页服务器报告的MIME类型与我们选择的dataType所匹配。比如说,XML的话,服务器端就必须声明 text/xml 或者 application/xml 来获得一致的结果。

如果指定为html类型,任何内嵌的JavaScript都会在HTML作为一个字符串返回之前执行。类似的,指定script类型的话,也会先执行服务器端生成JavaScript,然后再把脚本作为一个文本数据返回。

如果指定为json类型,则会把获取到的数据作为一个JavaScript对象来解析,并且把构建好的对象作为结果返回。为了实现这个目的,他首先尝试使用JSON.parse()。如果浏览器不支持,则使用一个函数来构建。JSON数据是一种能很方便通过JavaScript解析的结构化数据。如果获取的数据文件存放在远程服务器上(域名不同,也就是跨域获取数据),则需要使用jsonp类型。使用这种类型的话,会创建一个查询字符串参数 callback=? ,这个参数会加在请求的URL后面。服务器端应当在JSON数据前加上回调函数名,以便完成一个有效的JSONP请求。如果要指定回调函数的参数名来取代默认的callback,可以通过设置$.ajax()的jsonp参数。

案例分析:Jquery结合Ajax的使用

在指定的文件目录中导入jquery相关jar包:jquery-1.8.2.min.js

代码分析:

AjaxJqueryServlet.java:

/*** Jquery结合Ajax的使用*/
@WebServlet("/AjaxJqueryServlet")
public class AjaxJqueryServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html;charset=UTF-8");PrintWriter pw = response.getWriter();String p1 = request.getParameter("p1");String p2 = request.getParameter("p2");pw.write("服务器响应请求...获取参数:"+p1+"-"+p2);pw.flush();pw.close();}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}
}

测试jsp1:jquery1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>1.jquery结合Ajax的使用</title>
</head>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.8.2.min.js" ></script><body><div id="guigu"></div><input type="button" value="测试服务器" id="btn"/><script type="text/javascript">/*** AjaxJqueryServlet需要处理客户端请求并响应数据发送到客户端*/// 点击按钮触发事件$("#btn").click(function(){var param = {p1:"hello",p2:"ajax and jquery"};// 利用jquery的ajax实现简化操作$.ajax({type:"POST", // 请求方式url:"AjaxJqueryServlet", // 请求地址data:param, //向服务器传递的数据success:function(returnData){/*** success成功:由客户端传递数据到服务器,并且服务器响应完成后* 传递数据到客户端,全部正确执行* 等价于Ajax实现案例中步骤4的两步判断* if(XMLHttpReq.readyState==4){*      if(XMLHttpReq.status==200){*          ......处理数据*         }* }* returnData是将服务器传递的数据自动封装* eg:var xmlDoc = XMLHttpReq.responseXML;*/// 将数据在页面进行显示$("#guigu").html(returnData);}});});</script></body>
</html>

测试jsp:jquery2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>1.jquery结合Ajax的使用</title>
</head>
<script type="text/javascript"src="${pageContext.request.contextPath }/js/jquery-1.8.2.min.js"></script>
<body><div id="guigu"></div><input type="button" value="测试服务器" id="btn" /><script type="text/javascript">/*** AjaxJqueryServlet需要处理客户端请求并响应数据发送到客户端*/// 点击按钮触发事件$("#btn").click(function() {// 定义参数var param = {p1 : "hello",p2 : "ajax and jquery i am post"};// 利用jquery的ajax实现简化操作:可以通过调用明确的post或get方法/*** $.post("url",param,function(returnData){*        响应服务器返回的数据...* })*/$.post("AjaxJqueryServlet", param, function(returnData) {$("#guigu").html(returnData);});});</script>
</body>
</html>

结果展示:

访问资源http://localhost:8080/JavaWeb_Ajax/jquery1.jsp,结果显示如下所示

访问资源http://localhost:8080/JavaWeb_Ajax/jquery2.jsp,结果显示如下所示

ideahtml调用jquery函数失败_[WEB篇]-JQuery-06-Jquery实现异步调用相关推荐

  1. php变量在html调用函数调用,PHP_如何在html标记中调用的函数里传递对象,最近使用jquery结合Ajax开发一个 - phpStudy...

    如何在html标记中调用的函数里传递对象 最近使用jquery结合Ajax开发一个中小型网站应用.在后台管理中要使用Ajax调用系统功能,根据Ajax的返回结果,使用jQuery对前台页面进行操作. ...

  2. Bug调用其他函数失败

    现状 这个BUG算是迄今为止遇到过的最奇怪的BUG了,不能调用其他函数,一调用就跑到其他的函数里面. 问题 原来是因为这两行的原因,这个只能从宏观上把毛病跳出来, 代码 // ini_set('max ...

  3. index加载显示servlet数据_[WEB篇]-JavaWeb基础与应用-02-Servlet开发

    JavaWeb基础与应用 2.Servlet开发 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源 ...

  4. java 异步调用 事务_深入理解Spring注解@Async解决异步调用问题

    序言:Spring中@Async 根据Spring的文档说明,默认采用的是单线程的模式的.所以在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的. 那么当多个任务的执行势必会相互影响. ...

  5. mysql调用java函数_mysql概要(十五)存储过程(2)(java调用函数和存储过程)

    使用存储过程的目的: 即将数据的函数处理放在数据库,这样主要是为了,多语言跨平台的使用(java,.net,php),不用重复的函数代码,直接调用存储过程. (对于使用存储过程还是代码来处理数据的效率 ...

  6. linux调用一个函数失败 打印错误,linux系统调用出错时的处理函数

    在进行linux的系统调用, 要判断调用的成功与否, 调用失败的情况下就要进行一定的处理,除了打印出消息, 还可以打印系统调用的出错信息,  一般性的错误不必退出程序, 要是致命性的错误就终止整个程序 ...

  7. linux调用一个函数失败 打印错误,linux下settimeofday函数调用失败,何故?解决办法...

    当前位置:我的异常网» C语言 » linux下settimeofday函数调用失败,何故?解决办法 linux下settimeofday函数调用失败,何故?解决办法 www.myexceptions ...

  8. python编写一个函数判断一个数是否为素数是则返回yes_编写函数,判断一个整数是否为素数,并编写主程序调用该函数。_学小易找答案...

    [多选题]下列哪些情形中的外国人可以在中国申请专利? [简答题]为什么应尽量从列表的尾部进行元素的增加与删除操作? [简答题]编写程序,用户输入一个列表和 2 个整数作为下标,然后输出列表中介于 2 ...

  9. JQuery真的不难~第六回 JQ中的异步调用方式

    回到目录 前言 今天主要讲一下JQ中的异步编程,它将ajax进行封装,在进行异步请求时显得非常容易,无论是GET,POST方式,还是text,xml,javascript,json等数据通讯都是那么的 ...

最新文章

  1. ASP.net 2.0中水晶报表迁移部署问题
  2. mysql数据字典生成,在线生成mysql数据字典
  3. linux下载哪个python版本-Linux下切换Python版本的几种方法
  4. 通过ctrl+r快速启动程序
  5. 激光IMU融合——LIO-Mapping / LIOM / LINS / LIO-SAM算法解析
  6. python快速整理excel_使用pandas包用python清理excel数据
  7. Java多线程之并发容器(五)
  8. facebook 文本分类_如何禁用和自定义Facebook的通知,文本和电子邮件
  9. 工作111:直接写url
  10. 经典算法排序——插入排序
  11. android 自定义权限弹窗_Android-开源通用弹窗的封装CommonPopupWindow(总得向别人学点什么)...
  12. 人生轻似梦,芳华淡随风(转)
  13. 5)Javascript设计模式:extends模式
  14. MySQL8.0.14 - 新特性 - InnoDB Parallel Read简述 1
  15. Oracle 11g RAC 环境下单实例非缺省监听及端口配置
  16. EFCore-脚手架Scaffold发生Build Failed问题的终极解决
  17. 数据耦合的代码例子c语言,代码耦合的处理
  18. 锅炉实现物联网云平台方案
  19. Python自动化构建雷电模拟器
  20. android内存分析命令

热门文章

  1. php 微信支付 ca证书,微信公众号红包接口开发PHP开发 CA证书出错,请登陆微信支付商户平台下载证书...
  2. 服务器无限火力时间,LOL十周年宣布无限火力开启时间 无限火力开启及持续时间详情...
  3. P2617 Dynamic Rankings
  4. mysql被跑死_MySQL 8.0.23中复制架构从节点自动故障转移
  5. 区块链开发指南_区块链开发完全指南
  6. Oracle统计产生日志数据增长增量
  7. 重现Oracle数据库Hang住的情况
  8. append一个option会多出一个空的_Collections | 你必须会的Python库
  9. java openxml 操作 word_OpenXML操作word
  10. java cookie包_Java cookie的使用