对于Ajax,我们先了解三点(完整的JS代码在后面)

一、Ajax的出现对javascript的影响。

Ajax是微软提出的一种允许客户端脚本发送HTTP请求的技术(XMLHTTP),拯救了大多数java程序员讨厌的javascript

二、浏览器兼容性

想使用Ajax得创建一个对象,就是它

 new XMLHttpRequest();

但是,IE的低版本不支持以上这种方式,IE真讨厌。。它支持这种方式,

 new ActiveXObject("Microsoft.XMLHTTP");

三、异步与同步

通俗点的意思:

异步:就是大家想洗澡的时候一个开始脱衣服,后一个就开始脱衣服,不等前一个脱完。

同步:会等前一个人脱完再脱。。。

正题,如何使用Ajax
先创建一个web项目

打开web下的.jsp文件,首先使用html创建一个按钮,代码如下

 <button onclick="ck();">点击</button>

然后在js部分我们先创建一个函数,叫做ajax_test(),代码如下

 fuction ajax_test(){

 }

上面我们说过了使用Ajax需要创建一个对象,但是需要判断是否为IE或者其他浏览器,代码如下

 if(XMLHttpRequest){
  return new XMLHttpRequest();
}else if(ActiveXObject){
return new ActiveXObject("Microsoft.XMLHTTP");
}else{
alert("其他浏览器!");
}

创建一个ck()函数接收ajax_test()返回的对象,我们需要使用带这个对象的方法

 function ck(){
var xhr=ajax_test():
}

在这个对象中有两个方法,open()和send(),写入ck()中,分别用来准备和发送,

 function ck(){
var xhr=ajax_test();
xhr.open("GET","/ajax_test/p1/Servlet1",true);
xhr.send();
}

本来我们提交到服务器的需要用到表单,这会刷新一次网页,但是使用ajax可以实现局部刷新,所以open()代替了原来的表单提交。

open共有五个参数,后面两个参数为远程服务器交互的时候需要的用户名和密码,这里我们使用在同一个机器上的所以选择忽略,

第一个参数为提交的方式,为get和post提交,不区分大小写,第二个参数为Servlet的url(/项目名称/包/服务器类)可以在服务器查看request.getRequestURI(),可以在服务器查看是什么,第三个参数是否异步,可以不写,默认为异步

而我们send()的时候就会发送了。

这个时候我们在服务器写一个输出流,当Ajax访问服务器时,就会响应,

 response.getWriter().print("访问到服务器");

Ajax中有一个属性为responseText,它的值为服务器响应的值,即"访问到服务器",我们需要在js的代码中打印出来,如下

  function ck(){
var xhr=ajax_test();
xhr.open("GET","/ajax_test/p1/Servlet1",true);
xhr.send();
alert("send");
alert(xhr.responseText);
}

那上面的代码为什么需要在打印出responseText前先打印send呢?因为它是异步,我们发送send()的时候还没有获取到服务器的响应(还没有ok),有一个属性为readyState,它有五个值(0~4)4代表ok,我们需要等他执行完为4的时候才能获取到

服务器的响应,那我们直接同步false不就可以了吗?同步的效率比异步慢,所以这个对象里有一个可以监听的方法,onreadystatechange,它可以解决这个问题,代码如下,必须写在send()前

 xhr.onreadystatechange = function(){
alert(xhr.responseText);
}

js完整代码如下,服务器的代码只有一句输出流

 <script>
function ajax_test(){
if(XMLHttpRequest){
return new XMLHttpRequest();
}else if(ActiveXObject){
return new ActiveXObject("Microsoft.XMLHTTP");
}else{
alert("其他浏览器");
}
}
function ck(){
var xhr=ajax_test();
xhr.open("GET","/ajax_test/p1/Servlet1",true);
xhr.onreadystatechange = function(){
alert(xhr.responseTex);
}
xhr.send();
}
</script>

以上为我接触Ajax的理解,今天就到这里,有不懂的地方可以问下我,有空回复。

---2019-5-23 从沙尘暴中逃出的你已不再是跨入沙尘暴时的你《海边的卡夫卡》。

InstelliJ IDEA使用js+servlet+ajax入门的更多相关文章

  1. JavaWeb(HTML +css+js+Servlet....)

    注意 1.不要把函数命名为add(),不然容易和自带的冲突报错 2.是createElement 不要把create中的e写掉了 3.记得是getElementsByTaxName和getElemen ...

  2. JavaEE的ajax入门

    JavaEE的ajax入门 代码下载 链接:https://pan.baidu.com/s/1pb_sdSmV9Ncs6UIz3q2ztg 提取码:fgx6 复制这段内容后打开百度网盘手机App,操作 ...

  3. prototype.js 和 jQuery.js中 ajax 的使用

    这次还是prototype.js 和 jQuery.js冲突的问题,前面说到过解决办法http://www.cnblogs.com/Joanna-Yan/p/4836252.html,以及上网说的大部 ...

  4. ajax入门之建立XHR对象 (1)

    ajax入门之建立XHR对象 今天帮朋友写了一个简单的ajax的demo,发现了一些东西,决定写一篇文章记录一下,避免以后挖坑. 创建XMLHttpRequest 通常 function create ...

  5. Vue (一) --- vue.js的快速入门使用

    =-----------------------------------把现在的工作做好,才能幻想将来的事情,专注于眼前的事情,对于尚未发生的事情而陷入无休止的忧虑之中,对事情毫无帮助,反而为自己凭添 ...

  6. ASP.NET AJAX入门系列

    ASP.NET AJAX入门系列将会写关于ASP.NET AJAX一些控件的使用方法以及基础知识,其中部分文章为原创,也有一些文章是直接翻译自官方文档,本部分内容会不断更新. 目录 ASP.NET A ...

  7. 系列文章--ASP.NET之AJAX入门教程

    ASP.NET AJAX入门系列将会写关于ASP.NET AJAX一些控件的使用方法以及基础知识,其中部分文章为原创,也有一些文章是直接翻译自官方文档,本部分内容会不断更新. 目录 ASP.NET A ...

  8. 【JS】AJAX跨域-被调用方与调用方解决方案(二)

    解决跨域问题 跨域问题说明,参考[JS]AJAX跨域-JSONP解决方案(一) 实例,使用上一章([JS]AJAX跨域-JSONP解决方案(一))的实例 解决方案三(被调用方支持跨域-服务端代码解决) ...

  9. Django学习——图书管理系统图书修改、orm常用和非常用字段(了解)、 orm字段参数(了解)、字段关系(了解)、手动创建第三张表、Meta元信息、原生SQL、Django与ajax(入门)

    1 图书管理系统图书修改 1.1 views 修改图书获取id的两种方案 1 <input type="hidden" name="id" value=& ...

随机推荐

  1. EASYARM-IMX283 制作ubifs文件系统

    ubifs主页:http://www.linux-mtd.infradead.org/doc/ubifs.html nandflash上常用的文件系统有jffs2.yaffs和ubifs,其中ubif ...

  2. JAVA- 清除数组重复元素

    清除数组重复元素并打印新数组. import java.util.*; public class Repeat { public static void main(String[] args) { / ...

  3. 深入理解JVM - 虚拟机字节码执行引 - 第八章

    概述从外观上看起来,所有的 Java 虚拟机的执行引擎都是一致的:输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果.主要从概念模型的角度来讲解虚拟机的方法调用和字节码执行. 运行时 ...

  4. ultraedit激活

    使用期满的解决办法:https://blog.csdn.net/dfh00l/article/details/52093630 下载:https://blog.csdn.net/qq_16093323 ...

  5. 51nod1671【货物运输】

    开始天真的我以为这道题和运输计划是一样的套路.于是写了一发,debug后发现过了第一个点,十分开心的交了一发,结果只过了第一个点.后来发现这个并不是一样的,因为修建黑洞之后路径法变了,而运输计划没有( ...

  6. EVC入门之二: 在未被加载的DLL中设置断点 (虽然没有遇到这个问题,不过先摘抄下来)

    问题: 这个问题居然也郁闷了我一段时间. 我们假设在EVC里建立了一个project, 里面有SubProject_1(以下简称SB1,嘿嘿), 编译生成一个EXE; SubProject_2(以下简 ...

  7. 机器视觉 Histogram of oriented gradients

    Histogram of oriented gradients 简称 HoG, 是计算机视觉和图像处理领域一种非常重要的特征,被广泛地应用于物体检测,人脸检测,人脸表情检测等. HoG 最早是在200 ...

  8. ACM学习历程—HDU1392 Surround the Trees(计算几何)

    Description There are a lot of trees in an area. A peasant wants to buy a rope to surround all these ...

  9. ACM学习历程——HDU3333 Turing Tree(线段树 && 离线操作)

    Problem Description After inventing Turing Tree, 3xian always felt boring when solving problems abou ...

  10. codevs 3049 舞蹈家怀特先生

    题目描述 Description 怀特先生是一个大胖子.他很喜欢玩跳舞机(Dance Dance Revolution, DDR),甚至希望有一天人家会脚踏“舞蹈家怀特先生”.可惜现在他的动作根本不能 ...