irpas技术客

基于JQuery的Ajax+JSON(全)_听~宇

未知 3792

?

Asynchronous JavaScript And XML的缩写:异步的 JavaScript 和 XML AJAX

AJAX 不是新的编程语言,而是使用现有技术混合使用的一种新方法。ajax 中使用的技术有 JavaScript, html , dom , xml ,css 等。主要是 JavaScript , XML.异步加载,客户端和服务器的数据交互更新在局部??的 技术,不需要刷新整个??(局部刷新)

?优点: 1、局部刷新,效率更? 2、?户体验更好

?先用一个例子来开篇吧(jsp发起请求,Servlet接收

我们先来从同步开始讲,再到异步

全局刷新

?

?

?此时浏览器只能显示result.jsp页面,其他用户什么都看不到

怎么才能局部刷新呢,这里就要用到JQuery封装的??AJAX

?

AJAX 不单需要前端的技术,同时需要后端(服务器)的配合。服务器需要提供数据,数据 是 AJAX 请求的响应结果。

?

开发中是用JQuery封装的AjaxJQuery 提供多个与 AJAX 有关的方法。通过 jQuery AJAX 方法,您能够使用 HTTP Get 和 HTTP Post 从远程服务器上请求文本、HTML、XML 或 JSON 同时能够把接收的数据更新 到 DOM 对象。

$.ajax() 是 jQuery 中 AJAX 请求的核心方法,所有的其他方法都是在内部使用此方法。 语法:?

?引入JQuery封装的Ajax的js,引入还得ReBuild一下,不然out里没有该js资源


好了,我们来测试一下到底成功了没有(此时form表单提交方式已经被取代了)

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <script type="text/javascript" src="js/jquery-3.3.1.min.js"></script> <script type="text/javascript"> $(function () { var btn = $("#btn") btn.click(function () { alert("引入成功啦") }) }) </script> <body> ${str} <input type="text"><br> <input type="submit" value="提交" id="btn"> </body> </html>


基于 jQuery 的 AJAX,好了我们回到我们最开始的问题,怎么局部刷新呢

我们来举例子:一个添加电脑的表单,当用户填完电脑名后,他就进行局部刷新,JS函数去查看数据库是否有该电脑名,并对结果进行判断(前提要先引入jquery)

?

?

我们要有一个向数据库查询是否存在该电脑名的控制层

?addComputer.jsp(在这里面进行局部刷新)?

?跳转servlet进行判断

?来看一下结果


接下来我们再来写一个例子

补充一点JSON的知识 (JS第九讲我写过)

JSON

JavaScript Object Notation,?种轻量级数据交互格式,完成 js 与 Java 等后端开发语?对象数据之间的转换

?首先导包吧

?

?先通过一个例子来引入它吧

一个User类

public class User { Integer id; String name; double score; @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", score=" + score + '}'; } public User(Integer id, String name, double score) { this.id = id; this.name = name; this.score = score; } }

一个ServletTest.java

@WebServlet("/test") public class ServletTest extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { User user = new User(1,"Bob",23.5); resp.getWriter().write(user.toString()); } }

一个jsp

<script type="text/javascript" src="js/jquery-3.3.1.min.js"></script> <script type="text/javascript"> $(function () { var btn = $("#btn") btn.click(function () { //获取点击事件跳转Servlet $.ajax({ url:'/test', type:'post', dateType:'text', success:function (data) { alert(data) } }) }) }) </script> <body> <input type="submit" value="提交" id="btn"> </body>

运行情况

?通过输出Servlet拿到的data,我们能看到我们的User信息拿到了

但是我们如何在HTML页面来输出呢,这时就要用到JSON

一个ServletTest.java

@WebServlet("/test") public class ServletTest extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { User user = new User(1,"Bob",23.5); resp.setCharacterEncoding("UTF-8"); //将Java对象转换为JSON格式 JSONObject jsonObject = JSONObject.fromObject(user); resp.getWriter().write(jsonObject.toString()); } }

一个jsp

这个data其实是servlet? 传过来的

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <script type="text/javascript" src="js/jquery-3.3.1.min.js"></script> <script type="text/javascript"> $(function(){ var btn = $("#btn"); btn.click(function(){ $.ajax({ url:'/test', type:'post', dataType:'json', success:function(data){ $("#id").val(data.id); $("#name").val(data.name); $("#score").val(data.score); } }); }); }) </script> <body> 编号:<input id="id" type="text"/><br/> 姓名:<input id="name" type="text"/><br/> 成绩:<input id="score" type="text"/><br/> <input id="btn" type="button" value="提交"/> </body> </html>

运行情况

再举一个查询json接收多个的例子

输出到浏览器是这种


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #ASynchronous #JavaScript #and #XML的缩写异步的 # #XML