ajax如何取消异步?ajax有哪些功能点?

阳光 2022-07-04 15:21:36 java常见问答 5477

AJAX 是一种用于创建快速动态网页的技术,通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。那如果我们想要取消ajax异步要怎么做呢?下面来我们就来给大家讲解一下。

ajax取消异步.jpg

代码如下:

$.ajax(
{
    type: "POST"
    , contentType: "application/json"
    , dataType: 'json'
    , async: false, //取消异步请求
    success: function (result)
    {
        // 请求成功回调方法
    }
    , error: function (result, status)
    {
        // 请求失败回调方法
    }
});

async设置为false是关闭异步,不设置默认为true

ajax有哪些功能点?

1. 创建原生Ajax对象

XMLHttpRequest 是 AJAX 的基础,所有现代浏览器(IE7+、Firefox、Chrome、Safari 以及 Opera)均内建 XMLHttpRequest 对象。那么我们下面来创建一个ajax对象

const instance = new XMLHttpRequest();

这样我们就创建了一个用于进行ajax交互的对象。

当然我们这儿提及一下老版本的ie5、ie6得javascript对象都是使用ActiveX来实现的标准,所以没有XMLHttpRequest对象。他们创建一个对象使用这种方式

const instance = new ActiveXObject("Microsoft.XMLHTTP");

其实我们了解一下就行了,这块在你的代码也不用加上了,现在所有的网站应该都放弃了对低版本ie的支持,这个已经退出了历史舞台,了解一下情况即可。

2. Ajax发送请求

首先来看一下XMLHttpRequest如何发送一个请求到服务器

const instance = new XMLHttpRequest(); instance.open(method,url,async); instance.send();

这里用到了两个方法,第一个open方法其实是配置ajax必要的信息,第二个send才是真正的发起请求到服务器。

3. Ajax通过readyState状态的变化接收服务器响应

当请求被发送到服务器时,我们需要执行一些基于响应的任务,每当 readyState 改变时,就会触发onreadystatechange 事件,readyState 属性存有 XMLHttpRequest 的状态信息。

4. 进级苦恼之跨域请求

跨域是所有前端都必须去面对的一个棘手的问题,当你去请求其他服务器的资源时,浏览器安全限制会阻止该请求。你的请求不会到底服务器,被浏览器阻止了,这也是遵循了同源策略。

那么如何去解决这个跨域呢,通用的有几种方法,但是核心都是需要服务器去配合处理跨域,前端自己无法处理跨域。

第一个采用JsonP方法,这个方法其实也是需要后台去配合处理,由后台来进行请求,然后将数据拼装在一个json对象返回到前台,然后前台通过callback函数来进行操作。这个也比较繁琐。

第二种就是服务端去放一个跨域文件crossdomain.xml放置到服务器端,然后写上可以跨域的ip地址。

第三种配置反向代理服务器,通过代理服务器我们也其实是代理服务器去请求外围,然后转发到我们的服务器上。这样也可以防止跨域。

另外,Ajax能在不更新整个页面的前提下维护数据,这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变的信息。最后大家如果想要了解更多其他工具教程知识,敬请关注奇Q工具网。

推荐阅读:

python多线程面试题有哪些?python多线程面试题汇总

java中的泛型怎么用?Java泛型使用与不使用有区别吗?

给人表白怎么写java代码?表白代码展示