} catch (e2) {
xmlHttp = false;
}
}
xmlHttp = new ActiveXObject(“Msxml2.XMLHTTP”); xmlHttp = new ActiveXObject(“Microsoft.XMLHTTP”);这两行代码就是尝试使用两个版本的 MSXML 创建对象,如果失败则使用另一个版本创建该对象。如果都不成功,则将 xmlHttp 变量设为 false,告诉您的代码出现了问题。出现这种情况,可能是因为安装了非 Microsoft 浏览器,需要使用不同的代码。
处理 Mozilla 和非 Microsoft 浏览器
var xmlHttp = new XMLHttpRequest object; 这行简单得多的代码在 Mozilla、Firefox、Safari、Opera 以及基本上所有以任何形式或方式支持 Ajax 的非 Microsoft 浏览器中,创建了 XMLHttpRequest 对象。
支持所有浏览器
var xmlHttp = false;
try {
xmlHttp = new ActiveXObject(“Msxml2.XMLHTTP”);
} catch (e) {
try {
xmlHttp = new ActiveXObject(“Microsoft.XMLHTTP”);
} catch (e2) {
xmlHttp = false;
}
}
if (!xmlHttp && typeof XMLHttpRequest != ‘undefined’) {
xmlHttp = new XMLHttpRequest();
}
这段代码的核心分为三步:
1、建立一个变量 xmlHttp 来引用即将创建的 XMLHttpRequest 对象。
2、尝试在 Microsoft 浏览器中创建该对象:
1)尝试使用 Msxml2.XMLHTTP 对象创建它。
2)如果失败,再尝试 Microsoft.XMLHTTP 对象。
3、如果仍然没有建立 xmlHttp,则以非 Microsoft 的方式创建该对象。
最后,xmlHttp 应该引用一个有效的 XMLHttpRequest 对象,无论运行什么样的浏览器。
Ajax请求/响应
发出请求
您已经有了一个崭新的 XMLHttpRequest 对象,现在让它干点活儿吧。首先需要一个 Web 页面能够调用的 JavaScript 方法。接下来就是在所有 Ajax 应用程序中基本都雷同的流程:
1、从 Web 表单中获取需要的数据。
2、建立要连接的 URL。
3、打开到服务器的连接。
4、设置服务器在完成后要运行的函数。
5、发送请求。
function callServer() {
// 获取ID为city的表单信息
var city = document.getElementById(“city”).value;
var state = document.getElementById(“state”).value;
// 判断都不为空
if ((city == null) || (city == “”)) return;
if ((state == null) || (state == “”)) return;
// 创建要发送的URl
var url = “/scripts/getCode.aspx?city=” + escape(city) + “&state=” + escape(state);
// 打开连接
xmlHttp.open(“GET”, url, true);
// 请求返回执行的函数
xmlHttp.onreadystatechange = updatePage;
// 发送请求
xmlHttp.send(null);
}
开始的代码使用是基本 JavaScript 代码获取几个表单字段的值。然后设置一个 aspx页面 脚本作为链接的目标。要注意脚本 URL 的指定方式,city 和 state(来自表单)使用,简单的 GET 参数附加在 URL 之后。
然后打开一个连接,这是您第一次看到使用 XMLHttpRequest。其中指定了连接方法(GET)和要连接的 URL。最后一个参数如果设为 true,那么将请求一个异步连接。如果使用 false,那么代码发出请求后将等待服务器返回的响应。如果设为 true,当服务器在后台处理请求的时候用户仍然可以使用表单(甚至调用其他 JavaScript 方法)。
xmlHttp(XMLHttpRequest 对象实例)的 onreadystatechange 属性可以告诉服务器在运行完成后(可能要用五分钟或者五个小时)做什么。因为代码没有等待服务器,必须让服务器知道怎么做以便您能作出响应。在这个示例中,如果服务器处理完了请求,一个特殊的名为 updatePage() 的方法将被触发。
最后,使用值 null 调用 send()。因为已经在请求 URL 中添加了要发送给服务器的数据(city 和 state),所以请求中不需要发送任何数据。这样就发出了请求,服务器按照您的要求工作。
处理响应
什么也不要做,直到 xmlHttp.readyState 属性的值等于4(就绪状态)。
服务器将把响应填充到 xmlHttp.responseText 属性中。 使用xmlHttp.responseText 属性获得服务器的响应。
if(req.readyState==4){
if(req.status == 200 ){
var msg = req.responseXML.getElementsByTagName(“msg”)[0];
document.getElementById(“result”).innerHTML = msg.childNodes[0].nodeValue;
}
}
validate.jsp文档:
最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上我搜集整理的2019-2021BATJ 面试真题解析,我把大厂面试中常被问到的技术点整理成了PDF,包知识脉络 + 诸多细节。
节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
《960全网最全Android开发笔记》
《379页Android开发面试宝典》
历时半年,我们整理了这份市面上最全面的安卓面试题解析大全
包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。
如何使用它?
1.可以通过目录索引直接翻看需要的知识点,查漏补缺。
2.五角星数表示面试问到的频率,代表重要推荐指数
《507页Android开发相关源码解析》
只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。
真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。
腾讯、字节跳动、阿里、百度等BAT大厂 2019-2021面试真题解析
资料太多,全部展示会影响篇幅,暂时就先列举这些部分截图
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!
)]
腾讯、字节跳动、阿里、百度等BAT大厂 2019-2021面试真题解析
[外链图片转存中…(img-S3nsAuJN-1714380172358)]
资料太多,全部展示会影响篇幅,暂时就先列举这些部分截图
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!