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. 三、git学习之——管理修改、撤销修改、删除文件

    一.管理修改 现在,假定你已经完全掌握了暂存区的概念.下面,我们要讨论的就是,为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件. 你会问,什么是修改?比如你新增了一行, ...

  2. IE各版本和Windows的关系

  3. Angular:管道和自定义管道

    ①管道的使用,更多管道在angular官网上有 <p>全部转为大写:{{'hahahah' | uppercase}}</p> <p>保留两位小数:{{1.4555 ...

  4. 主从复制直接转换MGR_5.7验证试验

    环境信息 IP port role info 192.168.188.51 4000 node1 master 192.168.188.52 4000 node2 slave1 192.168.188 ...

  5. js 传输数据 加密

    一.js函数加密 escape()和unescape(); escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串. 加密 escape(string) unescape() ...

  6. react第十单元(children的深入用法-React.Children对象上的方法)

    第十单元(children的深入用法-React.Children对象上的方法) #课程目标 理解什么是children 掌握React.Children对象上的方法 #知识点 什么是children ...

  7. [日常摸鱼]bzoj1444 [JSOI2009]有趣的游戏——AC自动机+矩阵

    今天学校跳蚤市场摆摊聚众吸毒打call,东西卖了一百多好开心_(:з」∠)_ (然后大家中午就去吃了一顿好的x) 下午听演讲然后现在来填坑orz(其实是昨晚的坑) 题目:bzoj1444 先用字符串构 ...

  8. nodeJS中的事件机制

    events模块是node的核心模块,几乎所有常用的node模块都继承了events模块,比如http.fs等.本文将详细介绍nodeJS中的事件机制 EventEmitter 多数 Node.js ...

  9. Python Cvxopt安装及LP求解

    Python 2.7 Pycharm 1.直接File>Settings>Project>InterPreter ,点击右侧'+' 弹出Available packages窗口,搜索 ...

  10. C# Wpf 后台代码设定UIElement的Canvas位置属性值

    后台in-code设定元件UIElement的Canvas位置属性的两种方法: 1.UIElement.SetValue()方法 uiElement.SetValue(Canvas.TopProper ...