7986LiChang / MyLearnDemos

前端学习路上实现过的一些demo,近期在集中整理基础知识
MIT License
0 stars 0 forks source link

Ajax相关整理 #4

Open 7986LiChang opened 7 years ago

7986LiChang commented 7 years ago

1. Ajax技术 = 异步JavaScript和XML

7986LiChang commented 7 years ago

报错:在chrome本地运行(file协议),其中包含Ajax请求时

会报错:

XMLHttpRequest cannot load file:///Users/iceStone/Documents/Learning/angular/demo/angular-moviecat/movie/view.html. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource. 即跨域请求仅支持协议:http, data,chrome, chrome-extension,https,chrome-extension-resource

  • 因此,chrome不支持file协议下的AJAX请求,但是在firefox浏览器下,支持file协议下的AJAX请求。

对应在chrome下的解决方法:

1)可以通过插件SublimeServer(提供静态文件HTTP服务器),从而模拟通过服务器访问

7986LiChang commented 7 years ago

HTML与XML

XML是可扩展标记语言,用于结构化、存储以及传输信息。

7986LiChang commented 7 years ago

3. AJAX ASP/PHP请求实例

可以用AJAX创建动态性更强的应用程序 可以请求php文件,发送带有查询字符串的GET请求

7986LiChang commented 7 years ago

4. AJAX 用于与数据库通信

网页可以通过AJAX从数据库读取信息

7986LiChang commented 7 years ago

5.AJA可用于与XML文件进行交互式通信

使用AJAX读取来自XML文件的信息 xmlhttp.responseXML获取得到xml数据后

var data = xmlhttp.responseXML;
var txt = "";
//解析xml数据
var datainfo = data.getElementsByTagName("CD");   //获取全部CD标签
//遍历所有CD标签
for(var i = 0; i < datainfo.length; i++){
     var titlename = datainfo[i].getElementsByTagName("TITLE");
     //获取titlename元素中的值
     txt += titlename[0].firstChild.nodeValue;
}
document.getElementById("txt").innerHTML = txt;
7986LiChang commented 7 years ago

6.获取ajax响应头部信息

通过以下两个方法:

7986LiChang commented 7 years ago

7.使用AJAX的基本套路

7986LiChang commented 7 years ago

8.xhr对象的其他方法:

7986LiChang commented 7 years ago

9.跨域解决方案

使用XHR(XMLHttpRequest对象)实现Ajax请求时,一个重要约束是浏览器的同源策略: 默认情况下,发送Ajax请求时,请求URL的域名必须和当前页面完全一致,即只能访问同源资源,“相同的域、相同的端口、相同的协议”。

若试图访问非同源下的资源,都会引发安全错误。

三类跨域解决方案: