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

跨域:跨域名

一个域名下的文件去请求了和他不一样的域名下的资源文件,那么就会产生跨域请求

这是浏览器的一个安全策略。

但可以通过后端请求,解决这个问题。PHPNodejs等不受限制。

首先在js文件创建一个函数fn(),然后后端返回一个包含参数的执行函数,函数就会自动运行。

为防止页面加载就运行,可以使用动态添加script标签,然后才会运行。

Last updated

Was this helpful?