Ajax
get请求
//比喻:打开浏览器
var xhr = new XMLHttpRequest();
//比喻:在地址栏输入地址
xhr.open('get','1.txt',true);
/*open方法
参数
1.打开方式
2.地址
3.是否异步
异步(true):非阻塞 前面的代码不会影响后面代码的执行
同步(false):阻塞 前面的代码会影响后面代码的执行*/
//如果URL含有中文,会出现乱码,要使用`encodeURI`编码URL。
//提交
xhr.send();
//等待服务器返回内容
xhr.onreadystatechange = function() {
if ( xhr.readyState == 4 ) {
alert( xhr.responseText );
}readyState取值:
0:请求未初始化(还没有调用 open())。
1:请求已经建立,但是还没有发送(还没有调用 send())。
2:请求已发送,正在处理中(通常现在可以从响应中获取内容头)。
3:请求在处理中;通常响应中已有部分数据可用了,但是服务器还没有完成响应的生成。
4:响应已完成;您可以获取并使用服务器的响应了。
从发送请求到对后端的返回的数据进行处理的状态值变化。 但如果没有相应的文件,也有错误信息返回,这是状态值也是一样,所有还需要加入status:
返回的是字符串,使用JSON.parse()把字符串转换为json对象。
JSON.stringify()可以把一个对象转换成字符串。
使用JSON.parse()、JSON.stringify()需严格遵守JSON规范,如属性都需用双引号引起来
post请求
错误处理
try、catch、throw
JSONP
跨域:跨域名
一个域名下的文件去请求了和他不一样的域名下的资源文件,那么就会产生跨域请求
这是浏览器的一个安全策略。
但可以通过后端请求,解决这个问题。PHP、Nodejs等不受限制。
首先在js文件创建一个函数fn(),然后后端返回一个包含参数的执行函数,函数就会自动运行。
为防止页面加载就运行,可以使用动态添加script标签,然后才会运行。
Last updated
Was this helpful?