热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Ajax简介、封装、同步异步Ajax相关面试题

一、Ajax简介(1)什么是Ajax?Ajax异步JavaScript和XML;Ajax是一种用于创建快速动态网页的技术

一、Ajax 简介

(1)什么是 Ajax ?


  • Ajax = 异步 Javascript 和 XML;
  • Ajax 是一种用于创建快速动态网页的技术;
  • 通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新;

(2)工作原理:

(3)Ajax 的优点和缺点:

优点:


  • 实现异步通信效果
  • 实现页面局部刷新
  • 带来更好的用户体验
  • 按需获取数据
  • 节约带宽资源

缺点:


  • Ajax 不支持浏览器 back 按钮
  • 安全问题 Ajax 暴露了与服务器交互的细节
  • 对搜索引擎的支持比较弱
  • 破坏了程序的异常机制

二、创建 XMLHttpRquest 对象

XMLHttpRequest 是 Ajax 的基础。

语法:

variable = new XMLHttpRequest();

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

示例:

function loadXMLDoc() {var xmlhttp;if (window.XMLHttpRequest) {// IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码xmlhttp=new XMLHttpRequest();} else {// IE6, IE5 浏览器执行代码xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}xmlhttp.onreadystatechange=function() {if (xmlhttp.readyState==4 && xmlhttp.status==200) {document.getElementById("myDiv").innerHTML=xmlhttp.responseText;}}xmlhttp.open("GET","/try/ajax/ajax_info.txt",true);xmlhttp.send();
}

三、封装 Ajax

//封装ajax
function ajax(obj) {//创建XMLHttpRequest对象if(window.XMLHttpRequest) {var xhr = new XMLHttpRequest();}else{var xhr = new ActiveXObject("Microsoft.XMLHTTP");}obj.url = obj.url+'?rand='+Math.random(); //使用js随机字符串解决IE第二次它就默认获取缓存数据,导致数据不更新obj.data = (function(data){ //名值对转换为字符串闭包的方式调用var arr = [];for(var i in data){arr.push(encodeURIComponent(i)+'='+encodeURIComponent(data[i]));}return arr.join('&');})(obj.data);if(obj.method === 'get')obj.url += obj.url.indexOf('?') == -1?'?'+obj.data:'&'+obj.data;if(obj.async === true){xhr.onreadystatechange = function(){if(xhr.readyState == 4){callback();}};}xhr.open(obj.method,obj.url,obj.async);if(obj.method === 'post'){xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); //模仿表单提交xhr.send(obj.data);}else{xhr.send(null);}if(obj.async === false){callback();}function callback(){if(xhr.status == 200){obj.success(xhr.responseText); //函数回调}else{alert('获取数据失败!错误代号:'+xhr.status+',错误信息:'+xhr.statusText);}}
}//调用ajax
$(document).click(function(){ajax({method : 'post',url : 'demo.php',data : {'name' : 'Lee','age' : 100},success : function (text) {alert(text);},async : true});
});

四、同步和异步

Ajax 中根据 async 的值不同分为同步(async = false)和异步(async = true)

$.ajax({ type: "post", url: "path", cache:false, async:false, dataType: ($.browser.msie) ? "text" : "xml", success: function(xmlobj){ function1(){};}
});function2(){};

  • 默认情况下 async 是 true;

(1)概念:


  • 同步请求:(false)
    同步请求即是当前发出请求后,浏览器什么都不能做,必须得等到请求完成返回数据之后,才会执行后续的代码,相当于是排队,前一个人办理完自己的事务,下一个人才能接着办。

  • 异步请求:(true)
    异步请求就当发出请求的同时,浏览器可以继续做任何事,Ajax发送请求并不会影响页面的加载与用户的操作,相当于是在两条线上,各走各的,互不影响。
    一般默认值为true,异步。异步请求可以完全不影响用户的体验效果,无论请求的时间长或者短,用户都在专心的操作页面的其他内容,并不会有等待的感觉。

(2)区别:


  • 同步是所有的操作都做完,才返回给用户结果。即写完数据库之后,再响应用户,用户体验不好。
  • 异步不用等所有操作都做完,就相应用户请求。即先响应用户请求,然后慢慢去写数据库,用户体验较好。

五、Ajax 相关面试题


  • 什么是Ajax ? 如何创建一个 Ajax 以及请求状态,从0-4的变化
  • 同步和异步的区别?
  • 简述 Ajax 的过程
  • 页面编码和被请求的资源编码如果不一致如何处理?
  • 阐述一下异步加载
  • GET和POST的区别,何时使用POST?
  • Ajax 属于 Javascript?
  • Ajax-GET-IE兼容问题
  • Ajax-GET 封装
  • POST 请求
  • Ajax-POST 基本使用
  • jQuery 中的 Ajax
  • Ajax-XML
  • Ajax-json
  • 工作当中会和后台交互吗? 那你能说说封装好的 ajax里的几个参数吗 ?
  • 为什么要用ajax
  • ajax最大的特点是什么?
  • Ajax主要包含了哪些技术?
  • ajax应用和传统Web应用有什么不同
  • Ajax 请求总共有多少种CALLBACK
  • 介绍一下Prototype的()函数,()函数,(),F()函数,$A()函数都是什么作用
  • Ajax 都有哪些优点和缺点?
  • 常用的 Ajax 框架有哪些?
  • Ajax 的核心对象是什么?
  • 如何实现 Ajax 请求
  • Ajax 解决浏览器缓存问题


想要领取 Ajax 面试题和学习前端的小伙伴们,可以加入这边的Q裙:【624369675】
更多 (点击👉🏻) 前端学习资料 + 前端大厂面试真题,均可免费领取!



推荐阅读
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • ECMA262规定typeof操作符的返回值和instanceof的使用方法
    本文介绍了ECMA262规定的typeof操作符对不同类型的变量的返回值,以及instanceof操作符的使用方法。同时还提到了在不同浏览器中对正则表达式应用typeof操作符的返回值的差异。 ... [详细]
  • 本文介绍了网页播放视频的三种实现方式,分别是使用html5的video标签、使用flash来播放以及使用object标签。其中,推荐使用html5的video标签来简单播放视频,但有些老的浏览器不支持html5。另外,还可以使用flash来播放视频,需要使用object标签。 ... [详细]
  • XMLhttpREquest_Ajax技术总结之XmlHttpRequest
    Ajax1、 什么是ajax   ... [详细]
  • pyecharts 介绍
    一、pyecharts介绍ECharts,一个使用JavaScript实现的开源可视化库,可以流畅的运行在PC和移动设备上,兼容当前绝大部 ... [详细]
  • 文章目录简介HTTP请求过程HTTP状态码含义HTTP头部信息Cookie状态管理HTTP请求方式简介HTTP协议(超文本传输协议)是用于从WWW服务 ... [详细]
  • 最近在学Python,看了不少资料、视频,对爬虫比较感兴趣,爬过了网页文字、图片、视频。文字就不说了直接从网页上去根据标签分离出来就好了。图片和视频则需要在获取到相应的链接之后取做下载。以下是图片和视 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • 本文介绍了Android中的assets目录和raw目录的共同点和区别,包括获取资源的方法、目录结构的限制以及列出资源的能力。同时,还解释了raw目录中资源文件生成的ID,并说明了这些目录的使用方法。 ... [详细]
author-avatar
不完整的记忆721_560
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有