ajax请求

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

AJAX 优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。

异步:当程序执行到耗时操作时,会跳过当前,继续执行后边的程序,当求得结果获取后,触发一个回调函数,回到当前函数的请求下来的结果(示例:饭店服务员-厨师)

同步:当程序执行到耗时操作时,会一直等待这个操作执行完毕的结果,如果没有结果,则后续的代码永远无法执行

xml:是一种数据在网络中(前后端)传输的数据格式。这种数据格式比较类似于html格式,都是利用标签来包裹我们所需要的数据,在解析数据时,就是使用dom操作来获取标签中的数值(几乎绝迹)

json:当前流行的轻量级数据传输格式,类似于对象,把我们所需要的数据利用对象属性,属性值的形式组织起来,在解析数据时,就是把json格式装换为对象格式,通过访问对象属性值的方法获取所需要的数据


什么是 AJAX ?

AJAX = 异步 JavaScript 和 XML。

AJAX 是一种用于创建快速动态网页的技术。

通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

传统的网页,如果需要更新内容,必需重载整个网页面。


ajax

现在就开始使用 AJAX

AJAX - 创建 XMLHttpRequest 对象

XMLHttpRequest 是 AJAX 的基础。

XMLHttpRequest 对象

所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject)。

XMLHttpRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

创建 XMLHttpRequest 对象

IE7+、Firefox、Chrome、Safari 以及 Opera均内建 XMLHttpRequest 对象。

创建 XMLHttpRequest 对象的语法:

variable=newXMLHttpRequest();

为了应对所有的现代浏览器,包括 IE5 和 IE6,请检查浏览器是否支持 XMLHttpRequest 对象。如果支持,则创建 XMLHttpRequest 对象。如果不支持,则创建 ActiveXObject 

var xhr;

if(window.XMLHttpRequest){

xhr=newXMLHttpRequest();

}else{

xhr=newActiveXObject("Microsoft.XMLHTTP");}

AJAX - 向服务器发送请求请求

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

如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open() 和 send() 方法:

 配置请求参数

接口地址和接口参数使用?链接;接口参数之间使用&连接;参数的key和value之间,用=连接;

xhr.open('GET','./data.xml?'+'username = '+encodeURI(usernameText)+'&'+'password = '+passwordText + Math.random(),true);

get请求的参数中如果有中文,则需要使用encodeURI();函数把中文转化为URI格式的码;

get 在正式建立和服务器的连接时,会在浏览器缓存中查找这个接口的请求记录,如果有,则缓存中加载数据,而不是从服务器中获取数据

对于数据实时性比较敏感的应用来说,必须保证同一个数据接口,每次请求都是从服务器中获取的,所以我们可以在接口某位拼接一个随机数函数,这样每次发起请求,随机数都不一样,接口也就不一样,在浏览器的缓存中就找不到该接口的请求记录,因此能够保证每次的请求的数据都是从服务器中获取的

发送请求

如果当前请求为post请求,则需要把请求参数放在send的方法中,如果为get请求,则在send方法中传递null;

xhr.send(null);

监听请求的状况

每当请求状态发生一次改变,则xhr对象下的readystate属性值就会改变为对应的值,顺带触发readystatechange事件


我们可以通过该事件监听当前请求发送分状态好人服务器的响应状态,来判断是否获取所需要的值

xhr.onreadystatechange = function(){

if(xhr.readyState == 4 && xhr.status == 200){

alert('请求成功');

console.log(xhr.responseText);

console.log(xhr.responseXML );

//如果说是请求的是xml文件是要用xml.responseXML 来获取数据;

//如果说是请求json文件是要用xhr.responseText来获取数据

}

}


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

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

无法使用缓存文件(更新服务器上的文件或数据库)

向服务器发送大量数据(POST 没有数据量限制)

发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容