AJAX:是一种无需重新加载页面的情况下能够更新部分(局部更新)网页的技术。

1. 概念:ASychronous JavaScript And XML 异步的JavaScript和XML

首先了解一下异步和同步的区别。

异步:客户端发送请求到服务器,无论服务器是否返回响应,客户端都可以随意做其他的事情,中间的过程并不影向其他操作。

同步:客户端发送请求给服务器端,当服务器返回响应之前,客户端在此期间什么事情都不可以做,只能处于等待状态(卡死)。

  • AJAX运行原理

页面发起请求,会将请求发送给浏览器内核中的Ajax引擎,Ajax引擎会提交请求到   服务器端,在这段时间里,客户端可以任意进行任意操作,直到服务器端将数据返回    给Ajax引擎后,会触发你设置的事件,从而执行自定义的js逻辑代码完成某种页面1  功能。

实现方式:

1.js实现

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>js实现ajax</title>
<script>
function fun() { var ajaxServlet;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
ajaxServlet=new XMLHttpRequest();
}
else
{// code for IE6, IE5
ajaxServlet=new ActiveXObject("Microsoft.XMLHTTP");
}
ajaxServlet.onreadystatechange=function(){
if(ajaxServlet.readyState==4){//代表已接收后台数据,这时进行数据处理 var result = ajaxServlet.responseText;
var mydiv = document.getElementById("mydiv");
mydiv.innerHTML=result;
} } //建立连接 第一个参数是请求方式,第二个是URL,第三个参数true代表异步,false同步
ajaxServlet.open("GET","ajaxServlet?username=jerry",true);
//发送xmlhttp请求
ajaxServlet.send(); }
</script>
<style>
#mydiv{
border: 1px solid black;
width: 120px;
height: 50px;
} </style> </head>
<body>
<input type="button" value="发送异步请求" onclick="fun();"><br/> <div id="mydiv"> </div>
</body>
</html>

     XMLHttpRequest 对象用于和服务器交换数据。

与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。

然而,在以下情况中,请使用 POST 请求:

  • 无法使用缓存文件(更新服务器上的文件或数据库)
  • 向服务器发送大量数据(POST 没有数据量限制)
  • 发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠

异步 - True 或 False?

AJAX 指的是异步 JavaScript 和 XML(Asynchronous JavaScript and XML)。

XMLHttpRequest 对象如果要用于 AJAX 的话,其 open() 方法的 async 参数必须设置为 true;例如:

xmlhttp.open("GET","ajax_test.asp",true);

不推荐使用 async=false,但是对于一些小型的请求,也是可以的。

JavaScript 会等到服务器响应就绪才继续执行。如果服务器繁忙或缓慢,应用程序会挂起或停止。

注释:当您使用 async=false 时,请不要编写 onreadystatechange 函数 - 把代码放到 send() 语句后面即可:

xmlhttp.open("GET","test1.txt",false);
xmlhttp.send();
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

onreadystatechange 事件

当请求被发送到服务器时,我们需要执行一些基于响应的任务。

每当 readyState 改变时,就会触发 onreadystatechange 事件。

readyState 属性存有 XMLHttpRequest 的状态信息

2.jQuery实现

1. $.ajax({key1:value1,key2:value2,....})方法

常用的一些选项:async:true,代表异步处理,默认就是true,URL:“资源路径”,data:{参数1=“值1”...},dataType:"json",参数返回类型,type:post/get,提交方式,success:function(){};响应成功后执行的函数,error:function(){},响应失败执行的函数。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jquery_ajax2</title>
<script src="js/jquery-1.11.3.min.js"></script>
<script>
function fun(){
$.ajax({ url:"ajax",
data:{"content":"今天天气真不好!","name":"margin"},
async:"true",//默认为true,异步
type:"post",//默认get提交
dataType:"text",//返回类型
success:function (data) {
document.getElementById("div1").innerHTML = data;
},//响应成功,执行success
error:function () {
var div1 = document.getElementById("div1");
div1.innerHTML="服务器忙碌中,请稍后重试!";
}//执行失败,error对应的函数执行 })
} </script>
<style>
#div1{
width: 220px;
height: 150px;
border: 2px solid black;
} </style>
</head>
<body>
<input type="button" value="发送异步请求" onclick="fun();"><br/>
<div id="div1"> </div>
</body>
</html>

2.$.get(url,data,callback,type); 第一个参数是访问的地址,第二个参数是传递的参数,第三个参数是写执行成功后的回调函数,第四个代表服务器返回的参数文本类型,常用的有json,text等。

function fun() {

    $.get("ajaxServlet",{username:"tom"},function (name) {
alert(name);
},"text"); }

3.$.post(url,data,callback,type);jQuery通过post方法实现AJAX的方式和get方法相似,两者除了提交数据的方式不同,其余的使用方式基本一样。

function fun() {

$.post(

"ajaxServlet",

{username:"tom"},

function (name) { alert(name); },

"text");

}

了解一下ajax的更多相关文章

  1. jQuery之ajax实现篇

    jQuery的ajax方法非常好用,这么好的东西,你想拥有一个属于自己的ajax么?接下来,我们来自己做一个简单的ajax吧. 实现功能 由于jq中的ajax方法是用了内置的deferred模块,是P ...

  2. Ajax及跨域

    概念 Ajax Ajax,Asynchronous JavaScript and XML,字面意思:异步的 JavaScript 和 XML,是指一种创建交互式网页应用的网页开发技术. 用于异步地去获 ...

  3. 一个粗心的Bug,JSON格式不规范导致AJAX错误

    一.事件回放  今天工作时碰到了一个奇怪的问题,这个问题很早很早以前也碰到过,不过没想到过这么久了竟然又栽在这里. 当时正在联调一个项目,由于后端没有提供数据接口,于是我直接本地建立了一个 json ...

  4. ABP文档 - Javascript Api - AJAX

    本节内容: AJAX操作相关问题 ABP的方式 AJAX 返回信息 处理错误 HTTP 状态码 WrapResult和DontWrapResult特性 Asp.net Mvc 控制器 Asp.net ...

  5. ajax异步请求

    做前端开发的朋友对于ajax异步更新一定印象深刻,作为刚入坑的小白,今天就和大家一起聊聊关于ajax异步请求的那点事.既然是ajax就少不了jQuery的知识,推荐大家访问www.w3school.c ...

  6. 调用AJAX做登陆和注册

    先建立一个页面来检测一下我们建立的用户名能不能用,看一下有没有已经存在的用户名吗 可以通过ajax提示一下 $("#uid").blur(function(){ //取用户名 va ...

  7. Ajax 概念 分析 举例

    Ajax是结合了访问数据库,数据访问,Jquery 可以做页面局部刷新或者说是页面不刷新,我可以让页面不刷新,仅仅是数据的刷新,没有频繁的刷页面,是现在比较常用的一种方式做页面那么它是怎么实现页面无刷 ...

  8. ajax

    常见的HTTP状态码状态码:200 请求成功.一般用于GET和POST方法 OK301 资源移动.所请求资源移动到新的URL,浏览器自动跳转到新的URL Moved Permanently304 未修 ...

  9. 学习笔记之MVC级联及Ajax操作

    由于刚转型到MVC,MVC的架构模式很多不是很清楚,比如今天就想做个级联的操作,因为之前的ASP.NET的方式是通过:控件-->添加事件-->后台编写级联事件进行触发,但是这个MVC就不同 ...

  10. javascript表单的Ajax 提交插件的使用

    Ajax 提交插件 form.js 表单的下载地址:官方网站:http://malsup.com/jquery/form/ form.js 插件有两个核心方法:ajaxForm()和ajaxSubmi ...

随机推荐

  1. nginx配置访问本地资源

    参考博客:https://www.cnblogs.com/xy51/p/9973326.html 需要访问路径:http://IP:10013/p1upgrade/picfiles/image73b4 ...

  2. Django认证系统并不鸡肋反而很重要

    在使用django-admin startproject创建项目后,Django就默认安装了一个采用session实现的认证系统.这是Django相比于其他框架的一大特点:自带认证系统,开箱即用.有人 ...

  3. JavaScript:防抖与节流

    ①防抖: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <titl ...

  4. tengine下载和安装

    tengine简介: Tengine所基于开发的Nginx的意思是Engine-X,Tengine在淘宝开发,所以我们把Engine-X中的X替换成Taobao.Tengine即Taobao-Engi ...

  5. Unity 游戏的暂停,继续,重开,退出

    1.暂停游戏.   Time.timeScale = 0;   2.继续游戏.   Time.timeScale = 1;   Time.timeScale = 0可以暂停游戏,Time.timeSc ...

  6. Linux下安装mysql-5.7.24

    Mysql数据库的安装对于开发者来说,是我们必然会面对的问题,它的安装过程其实并不复杂,并且网络上的安装教程也非常多,但是对于新手来说,各种不同形式的安装教程,又给新手们带来了要选择哪种方式进行安装的 ...

  7. k8s ingress - traefik

    前面提到过 k8s 的 ingress 有 ingress-nginx,traefik,haproxy 等多种.今天来实践一下 tarefik. 闲言少叙,直接上代码. # cat traefik.y ...

  8. 用DirectX 11绘制一个Cube

    之前一篇文章讲了如何初始化DirectX 11,现在在此基础上绘制一个Cube,总体可概括为以下几个步骤: 定义Cube顶点数据结构 创建Vertex Buffer和Index Buffer 编写应用 ...

  9. Java面试被经常问到的常用算法

    一.冒泡排序 原理:比较两个相邻的元素,较大的放在右边 N个数字要排序完成,总共进行N-1趟排序,每i趟的排序次数为(N-i)次 最好时间复杂度为O(N) Cmax = N(N-1)/2 = O(N2 ...

  10. [leetcode]罗马数字和阿拉伯数字相互转换

    罗马转阿拉伯 public int romanToInt(String s) { /* 从左到右依次根据哈希表进行加法 如果是"CM"900这种情况就要执行+M和-C处理 */ i ...