JQuery AJAX基本使用

参考文档:JQuery在线文档

JQuery Ajax使用的四种基本方式

post方式

格式

$.post(url, [data], [callback], [type])

参数1:url,请求路径
参数2:data,请求参数
参数3:callback,回调函数
参数4:type,返回内容格式,默认的是text,xml, html, script, json, text, _default。

例子

获得 test.php 页面返回的 json 格式的内容

$.post("test.php", { "func": "getNameAndTime" }, function(data){alert(data.name); // Johnconsole.log(data.time); //  2pm
}, "json");

get方式

格式

$.get(url, [data], [callback], [type]);

第一个参数:请求的路径 如:

${pageContext.request.contextPath}/Servlet1

第二个参数:请求的参数 格式:

// JSON数据格式
{key1:value1,key2:value2}

第三个参数:回调函数 格式:

function(data){alert(data);
}

第四个参数:返回内容 格式:

xml, html, script, json, text, _default。

服务器响应编码为:application/json;charset=UTF-8,回调函数data类型是json对象

服务器响应编码为:text/html;charset=UTF-8,回调函数data类型是字符串。

$.get() 以get请求方式发送ajax除了请求方式不同,使用方式与$.post()完全一致。

.get()和.get()和.post()两种方式书写格式一模一样,只需要修改.get()为.get()为.post(),其余地方不需要改动!

它们的请求方式不同$.get()为get请求,$.post()为post请求。这两种请求方式在处理编码方式上不一样,建议优先使用$.post()请求方式。

例子

显示 test.cgi 返回值(HTML 或 XML,取决于返回值),添加一组请求参数。

$.get("test.cgi", { name: "John", time: "2pm" }, function(data){alert("Data Loaded: " + data);
});

load方式(少用)

适用于某个HTML元素需要获取服务器发送的响应信息,没有参数的情况下使用get请求,有参数则是POST请求。

格式

load(url, [data], [callback])

url:待装入 HTML 网页网址。
data:发送至服务器的 key/value 数据。
callback:载入成功时回调函数。

例子

加载 feeds.html 文件内容。

// get方式
$("#feeds").load("feeds.html");
// 同上,但是以 POST 形式发送附加参数并在成功时显示信息。
jQuery 代码:$("#feeds").load("feeds.php", {limit: 25}, function(){alert("The last 25 entries in the feed have been loaded");});

ajax方式

格式

$.ajax(url,[settings])

url:一个用来包含发送请求的URL字符串。
settings:AJAX 请求设置。所有选项都是可选的。

例子

检测用户名是否重复

function checkUsername(username) {var value = username.value;$.ajax({type : "POST",  //请求方式url : "${pageContext.request.contextPath}/RegisterServlet",  //请求路径data : {  //请求参数username : value},success : function(msg) {  //异步请求成功执行的回调函数alert("成功了: " + msg);$("#usernameinfo").html(msg);},//ajax引擎一般用不到;状态信息;抛出的异常信息error : function(XMLHttpRequest, textStatus, errorThrown) {alert(textStatus);alert("失败了"+errorThrown)}});
}

PS:要想回写错误信息,只有$.ajax方式。
PS:具体的Settings,可以查该博文首部的文档。

案例:登录验证

验证HTML

<div class="form-group"><label for="username" class="col-sm-2 control-label">用户名</label><div class="col-sm-6"><!-- 绑定一个离焦事件,用于Ajax判定用户名是否合法 --><input type="text" class="form-control" id="username" name="username" placeholder="请输入用户名" onblur="checkUserNameJQuery(this)"></div><div class="col-sm-4" id="userNameInfo"><!-- <span class="label label-success">用户名可用</span> <span class="label label-danger">用户名不可用</span> --></div>
</div>

JQuery使用AJAX实现用户名验证

<script src="${pageContext.request.contextPath}/js/jquery-1.11.3.min.js" type="text/javascript"></script>
<script type="text/javascript">function checkUserNameJQuery(obj) {// post请求// 参数1:url:发送请求地址// 参数2:[data]:待发送 Key/value 参数// 参数3:[callback([data])]发送成功时回调函数//        [data]回调函数的参数:响应体对象// 参数4:type:返回内容格式,xml, html, script, json, text, _default。$.post("${pageContext.servletContext.contextPath}/CheckUserNameIsExistServlet", {username: obj.value}, function (data) {$("#userNameInfo").html(data);});}
</script>

Servlet方法

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");request.setCharacterEncoding("utf-8");// 获取用户名参数String username = request.getParameter("username");// 查询用户try {User user = new UserService().getUserByUserName(username);if (user == null) {response.getWriter().write("<span class='label label-success'>用户名可用</span>");} else {response.getWriter().write("<span class='label label-danger'>用户名不可用</span>");}} catch (SQLException e) {e.printStackTrace();}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);
}

PS:dao层和service层不再给出,大致逻辑是service调用dao层的查询方法得到User对象,再返回给Servlet。

AJAX搜索下拉菜单案例

搜索HTML

<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1" style="float: right;"><form class="navbar-form navbar-right" role="search"><div class="form-group"><input type="text" class="form-control" placeholder="Search" id="searchText"></div><button type="submit" class="btn btn-default">Submit</button></form><!-- 显示查询信息的div --><div id="completeShow" style="display: none;"><ul id='itemul' class='list-group'><!-- <li class='list-group-item'><a href='#'>查询结果1</a></li><li class='list-group-item'><a href='#'>查询结果2</a></li><li class='list-group-item'><a href='#'>查询结果3</a></li><li class='list-group-item'><a href='#'>查询结果4</a></li><li class='list-group-item'><a href='#'>查询结果5</a></li> --></ul></div>
</div>

Javascript函数

高亮函数
// 将关键字高亮
function replaceKeyWord(text, key) {// 关键字出现的索引var index = 0;// 存放关键字出现的索引var arr = new Array();var i = 0;// 获取关键字开始出现的索引while((index = text.indexOf(key, index)) >= 0) {arr[i++] = index;index++;}// 关键字的长度var keyLen = key.length;// 从后往前修改文本for (var j = arr.length - 1; j >= 0; j--) {text = text.substring(0, arr[j]) + "<span style='background-color: yellow;'>" + text.substr(arr[j], keyLen) + "</span>"+ text.substring(arr[j] + keyLen, text.length);}// 测试// alert(text);return text;
}
搜索函数
// Ajax搜索
$(function() {$("#searchText").keyup(function() {// 搜索框绑定一个键盘弹起事件// alert("msg");// 清空子元素$("#itemul").empty();// 不等于空才发送请求if($(this).val() != "") {$.post("${pageContext.servletContext.contextPath}/SearchTextServlet", {"text": this.value}, function(data) {// 测试数据是否已获取// alert(data);// 获取到数据if($(data).size() > 0) {// 显示下拉菜单$("#completeShow").slideDown(200);$.each(data, function() {$("#itemul").append("<li class='list-group-item'><a href='#'>"+ replaceKeyWord(this.word + this.pinyin, $("#searchText").val()) +"</a></li>");});} else {// 隐藏下拉菜单$("#completeShow").slideUp(200);}}, "json");} else {// 隐藏下拉菜单$("#completeShow").slideUp(200);}}).focus(function() {// 聚焦事件,显示下拉菜单// 下拉菜单有元素则显示if($("#itemul li").size() > 0) {// 显示下拉菜单$("#completeShow").slideDown(200);}}).click(function() {// 禁用隐藏下拉菜单事件return false;});// 点击其他区域隐藏下拉菜单$(document).click(function() {$("#completeShow").slideUp(200);});});

SearchTextServlet

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");request.setCharacterEncoding("utf-8");// 获取表单信息String text = request.getParameter("text");// System.out.println(text);List<Word> words = new ArrayList<>();try {if (text != null && !"".equals(text) && !text.matches("[_%]")) {// 在数据库中搜索,只返回前五条记录words = new WordService().searchText(text.trim());}} catch (SQLException e) {e.printStackTrace();}// 转换成JSON数组对象JSONArray jsonWords = JSONArray.fromObject(words);response.getWriter().write(jsonWords.toString());
}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);
}

PS:dao层和service层不再给出,大致逻辑是service调用dao层的查询方法得到Word对象集合,再返回给Servlet。

JQuery AJAX基本使用相关推荐

  1. Ajax接收Java异常_java – 处理来自Servlet的Jquery AJAX响应中的异常

    我的servlet代码是 try{ //something response.setStatus(201); out.print("Data successfully saved" ...

  2. Jetty Cross Origin Filter解决jQuery Ajax跨域访问的方法

    当使用jQuery Ajax post请求时可能会遇到类似这样的错误提示 XMLHttpRequest cannot load http://xxxxxx. Origin http://xxxxxx ...

  3. Java项目:嘟嘟校园一卡通系统(java+JSP+Servlet+html+css+JavaScript+JQuery+Ajax+mysql)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 功能:卡管理,卡消费,卡充值,图书借阅,消费,记录,注销等等功能. 二.项目运行 环境配置: Jdk1.8 + Tomcat8 ...

  4. jquery.ajax的url中传递中文乱码问题的解决方法

    jquery.ajax的url中传递中文乱码问题的解决方法 JQuery JQuery默认的contentType:application/x-www-form-urlencoded 这才是JQuer ...

  5. jquery ajax java上传文件_jQuery Ajax方式上传文件的方法

    jQuery Ajax方式上传文件用到两个对象 第一个对象:FormData 第二个对象:XMLHttpRequest 目前新版的Firefox 与 Chrome 等支持HTML5的浏览器完美的支持这 ...

  6. jsp ajax动态添加数据,jquery Ajax实现Select动态添加数据

    jquery Ajax实现Select动态添加数据,具体内容如下 1.背景 最近在工作中,遇到了一个关于select的问题.一般情况下,select下拉框中的数据都是固定的或者直接在jsp中读取列表值 ...

  7. jQuery AJAX 网页无刷新上传示例

    新年礼,提供简单.易套用的 jQuery AJAX 上传示例及代码下载.后台对文件的上传及检查,以 C#/.NET Handler 处理 (可视需要改写成 Java 或 PHP). 有时做一个网站项目 ...

  8. java ajax datatype_理解jquery ajax中的datatype属性选项值

    jquery中ajax的dataType属性用于指定服务器返回的数据类型,如果不指定,jQuery 将自动根据HTTP包MIME信息来智能判断,如果datatype选项不填写的话,会将返回的数据当成字 ...

  9. jquery ajax下拉联动,jQuery Ajax MVC 下拉框联动

    无刷新下拉框联动方法: Controllers代码 public JsonResult DH_Change(string DH_ID) { List TeamLeaderList = FinanceD ...

  10. jquery ajax 与 flask 传输 json 并且 提取ajax数据作为全局变量

    jquery ajax 与 flask 传输 json 并且 提取ajax数据作为全局变量 jquery <!DOCTYPE html> <html lang="en&qu ...

最新文章

  1. 用Kotlin写Android Gradle脚本
  2. uniapp、vue,vuex中state改变,getters不动态改变的完美解决方案!
  3. 7.2 TensorFlow笔记(基础篇): 生成TFRecords文件
  4. 前端学习(378):新春贺卡制作1
  5. 基于 MaxCompute + Hologres 的人群圈选和数据服务实践
  6. SAP License:一句话让你明白FICO
  7. 【Android进阶学习】设置透明效果的三种方法
  8. 【数据库】MySql分割字符串
  9. iOS charles 抓包使用
  10. mysql实现停车场管理系统完整代码实现_基于微信小程序的停车场管理系统毕业论文+开题报告+前后台(Java+Mysql)源码及数据库文件...
  11. Qtum量子链入驻慢雾区,漏洞赏金计划单项最高奖励达1万美金!
  12. DCGAN训练人脸照片,pytorch
  13. 10种自动音乐播放器代码
  14. 如何安装并且运行阿帕奇服务器 for windows
  15. android仿ios下拉框,android 自定义ListView仿IOS阻尼效果
  16. 多示例论文泛读:Revisiting Multiple Instance Neural Networks (2016 mi-Net MI-Net)
  17. MySQL和数据库总结
  18. 论文分享|高精度面结构光三维测量方法研究
  19. 中国建设银行信息技术类校招笔试心得
  20. ASP.NET AJAX Control Toolkit 实现按拼音模糊检索下拉框

热门文章

  1. 2021 npm安装Electron失败解决方法
  2. C语言究竟是一门怎样的语言?
  3. “System.Data.SqlClient.SqlException: A transport-level error has occurred when receiving results fro
  4. C#LeetCode刷题之#202-快乐数(Happy Number)
  5. react的一些概念
  6. javascript 库_您应该在2020年尝试的10个很棒JavaScript库
  7. git规则写法_3条简单的规则将帮助您成为Git大师
  8. 通过Applescript打开终端运行py文件
  9. Python configparser模块操作代码实例
  10. PyFlink 在聚美优品的应用实践