Ajax 与异步数据传输,2024阿里前端笔试总结


上述代码的全部js部分可以用jQuery实现,如下:

function jsonpCallback(data) {

$(‘#output’).text(data.province + " " + data.catName);

}

$(‘#search’).click(function(){

var num = $(‘#tel’).val();

if(/^1[34578]\d{9}$/.test(num)){

var url = “http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=” + num" + “t=” + Math.random();

$.ajax({

url: url,

type: ‘GET’,

dataType: ‘JSONP’, // 处理Ajax跨域问题(本质已不是Ajax)

success: function(data){

$(‘#output’).text(data.province + " " + data.catName);

}

});

} else {

alert(“您输入的手机号有误”)

}

});

其他 Ajax 参数及方法


  • javascript

//属性

xhr.responseText; //从服务器返回的字符串数据

xhr.responseXML; //从服务器返回的 XML 数据

xhr.status; //服务器相应状态

xhr.readyState; //0: 请求未初始化; 1: 已建立连接; 2: 请求已接收; 3: 请求处理中; 4: 响应已就绪

xhr.timeout; //指定多少毫秒后超时,长整型

xhr.upload; //获取上传进度

xhr.withCredentials; //是否可以跨源,boolean 型,默认 false

//方法

xhr.getResponseHeader(‘connection’); //获取指定头信息

xhr.getAllResponseHeaders(); //获全部定头信息

xhr.open(“METHOD”, url, isAsyn); //open方法有3个参数,最后一个参数是 Boolean 型,表示是否异步,默认为 true

xhr.abort(); //终止请求,置xhr.readyState为0,但不触发onreadystatechange

xhr.overrideMimeType() //强制重写 http 头的 MIME 类型

//事件

XMLHttpRequestEventTarget.onreadystatechange //在xhr.readyState属性改变时触发

XMLHttpRequestEventTarget.ontimeout //在响应超时时触发

XMLHttpRequestEventTarget.onabort //当请求失败时调用该方法

XMLHttpRequestEventTarget.onerror //当请求发生错误时调用该方法

XMLHttpRequestEventTarget.onload //当一个HTTP请求正确加载出内容后返回时调用。

XMLHttpRequestEventTarget.onloadstart //当一个HTTP请求开始加载数据时调用。

XMLHttpRequestEventTarget.onloadend //当内容加载完成,不管失败与否,都会调用该方法

XMLHttpRequestEventTarget.onprogress //间歇调用该方法用来获取请求过程中的信息。

注:关于 xhr.status 可能的返回值,详见 http状态码

jQuery 中的 Ajax 方法


ajax 静态方法

$.ajax({options}) //发起一个 ajax 请求

options 常用以下属性设置:url, method(“GET”/“POST”), crossDomain, accepts(可接受的类型), dataType, cache, contentType(编码格式), success, error等

$.ajaxSetup({options}); //options同上,设置 ajax 默认参数,不建议使用

$.post(url, data, success, datatype); //发起一个 POST 请求 data为传递参数(可选), success(reponseText, statusText, xhr) 为成功时的回调函数(可选), datatype(xml/html/script/json/jsonp/text,可选)

$.get(url, data, success, datatype); //发起一个 GET 请求, 参数同上

$.getScript(url, data, success) //以 GET 请求获取一个 JS 文件并执行,参数含义同上

$.getJSON(url, data, success) //以 GET 请求获取一个 JSON 字符串,参数含义同上

ajax 动态方法

$().ajaxComplete(function(){}); //注册Ajax请求完成时要调用的处理程序

$().ajaxError(function(){}); //注册要在Ajax请求完成时遇到错误而调用的处理程序

$().ajaxSend(function(){}); //附加要在发送Ajax请求之前执行的函数

$().ajaxStart(function(){}); //注册在第一个Ajax请求开始时要调用的处理程序

$().ajaxStop(function(){}); //注册要在所有Ajax请求完成后调用的处理程序

$().ajaxSuccess(function(){}); //附加要在Ajax请求成功完成时执行的函数

$().load(url, data, callback); //返回某 url 的数据,data为传递参数(可选), callback(reponseText, statusText, xhr) 回调函数(可选)

其他相关方法

$.param(obj); //将对象转化为一个 url 参数列表

$(form).serialize(); //表单数据序列化为 url 参数列表

$(form).serializeArray(); //同上,但返回 JSON 串

简单封装 Ajax 相关方法


简单模仿 jQuery 中 $.ajax() 方法

(function(){

// Ajax 选项

var options = {

type: “GET”, //提交方式

url: “”, //路径

params: {}, //请求参数

dataType: “text”, //内容类型

success: function(){}, //回调函数

error: function(){}

};

//获取 XMLHTTPRequest 对象

var createRequest = function(){

var xmlhttp;

if(xmlhttp.XMLHttpRequest){

xmlhttp = new XMLHttpRequest();

}

else{

xmlhttp = new ActiveXObject(‘Microsoft.XMLHTTP’);

}

if(xmlhttp.overrideMimeType){

xmlhttp.overrideMimeType(‘text/xml’); //修改 MIME 类型

}

return xmlhttp;

},

// 设定 Ajax 选项

var setOptions = function(newOptions){

for(var prop in newOptions){

if(newOptions.hasOwnProperty(prop)){

this.option[prop] = newOptions[prop];

}

}

},

//格式化参数列表

var formatParameters = function(){

var paramsArr = [];

var params = this.options.params;

for(var prop in params){

if(params.hasOwnProperty(prop)){

paramsArr.push(prop + “=” + encodeURIComponent(params[prop]));

}

}

return paramsArr.join(‘&’);

},

//预处理并调用相应函数

var readystatechange = function(xmlhttp){

var returnValue;

if(xmlhttp.readyState == 4 && xmlhttp.status == 200){

switch(this.options.dataType){

case ‘xml’:

returnValue = xmlhttp.responseXML;

break;

case ‘json’:

returnVaue = xmlhttp.responseText;

if(returnValue){

returnValue = eval(“(” + returnValue + “)”);

}

break;

default:

returnVaue = xmlhttp.responseText;

break;

}

if(returnValue){

this.options.success(returnValue);

}

else{

this.options.success();

}

} else{

this.options.error();

}

},

//发送请求,也就是$.ajax()函数

var request = function(options){

// var ajaxObj = this;

var xmlhttp = this.createRequest();

this.setOptions(options);

xmlhttp.onreadystatechange = this.readystatechange.bind(null, xmlhttp);

var formatParams = this.formatParameters();

var type = this.options.type;

var url = this.options.url;

if(“GET” === type.toUpperCase()){

url += “?” + formatParameters;

}

xmlhttp.open(type, url, true);

if(“GET” === type.toUpperCase()){

xmlhttp.send();

} else if(“POST” === type.toUpperCase()){

xmlhttp.setRequestHeader(“Content-Type”, “application/x-www-form-urlencoded”);

xmlhttp.send(formatParameters);

}

}
window.$.ajax = request; //暴露方法到闭包外面去
})();

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
img

深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-4JRqkPVB-1710868732132)]
[外链图片转存中…(img-hI54yoZI-1710868732133)]
[外链图片转存中…(img-xOPYb58c-1710868732134)]
[外链图片转存中…(img-I5Tk0O6k-1710868732134)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
[外链图片转存中…(img-JkWiHRzY-1710868732135)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值