Open 7986LiChang opened 7 years ago
会报错:
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请求。
1)可以通过插件SublimeServer(提供静态文件HTTP服务器),从而模拟通过服务器访问
XML是可扩展标记语言,用于结构化、存储以及传输信息。
可以用AJAX创建动态性更强的应用程序 可以请求php文件,发送带有查询字符串的GET请求
网页可以通过AJAX从数据库读取信息
使用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;
通过以下两个方法:
使用XHR(XMLHttpRequest对象)实现Ajax请求时,一个重要约束是浏览器的同源策略: 默认情况下,发送Ajax请求时,请求URL的域名必须和当前页面完全一致,即只能访问同源资源,“相同的域、相同的端口、相同的协议”。
若试图访问非同源下的资源,都会引发安全错误。
三类跨域解决方案:
1. Ajax技术 = 异步JavaScript和XML
2.XMLHttpRequest对象
用于在后台与服务器交换数据。意味着可以在不重新加载整个网页的情况下,对网页的部分进行更新。
1)创建XMLHttpRequest对象:
var xhr = new XMLHttpRequest();
但是在老版本的IE5和IE6中,是使用ActiveX对象var ax = new ActiveX("Microsoft.XMLHTTP");
因此,应对所有浏览器创建XMLHttpRequest对象使用的是:2)使用XMLHttpRequest对象向服务器发送请求
主要通过XMLHttpRequest对象的以下两个方法实现:
(1)当使用异步方式true请求数据时,要注意使用onreadystatechange属性
3)使用XMLHttpRequest对象获取服务器响应
主要通过XMLHttpRequest对象的以下两个属性实现:
4)onreadystatechange事件
(1)XMLHttpRequest对象有三个重要属性:
(2)onreadystatechange事件
(3)使用回调函数callback
<button type="button" onclick="myFunction()">通过 AJAX 改变内容</button>