//仅供参考 xhr
function ajax(type ,url , data , successCallBack , errorCallBack){
let xhr = new XMLHttpRequest();
xhr.onload = ()=>{
if(xhr.status === 200){
return successCallBack(xhr.response||xhr.responseText);
}
return errorCallBack('请求失败');
}
xhr.onerror = ()=>{
return errorCallBack('出错了');
}
xhr.open(type,url);
xhr.send(data ? data:null);
}
ajax('get','/test/getUserList' , undefined , function(result){
console.log('成功了。', result);
} ,function(error){
console.log(error);
});
//仅供参考 xhr.abort
function ajax(type ,url , data , successCallBack , errorCallBack){
let xhr = new XMLHttpRequest();
xhr.onload = ()=>{
if(xhr.status === 200){
return successCallBack(xhr.response||xhr.responseText);
}
return errorCallBack('请求失败');
}
xhr.onerror = ()=>{
return errorCallBack('出错了');
}
xhr.open(type,url);
xhr.send(data ? data:null);
return xhr;//返回XMLHttpRequest实例对象
}
let xhr = ajax('get','/test/getUserList' , undefined , function(result){
console.log('成功了。', result);
} ,function(error){
console.log(error);
});
//abort
xhr.abort();
//仅供参考 promise
function ajax(type ,url , data ){
let xhr = new XMLHttpRequest();
let promise = new Promise(function(resolve , reject){
xhr.onload = ()=>{
if(xhr.status === 200){
return resolve(xhr.response||xhr.responseText);
}
return reject('请求失败');
}
xhr.onerror = ()=>{
return reject('出错了');
}
xhr.open(type,url);
xhr.send(data ? data:null);
});
return promise;//返回Promise实例对象
}
let promise = ajax('get','/test/getUserList');
promise.then((result)=>{
console.log('成功了。', result);
},(error)=>{
console.log(error);
})
let map = [];//用于保存promise和xhr之间的映射关系
//仅供参考 promise abort
function ajax(type ,url , data ){
let xhr = new XMLHttpRequest();
let promise = new Promise(function(resolve , reject){
xhr.onload = ()=>{
if(xhr.status === 200){
return resolve(xhr.response||xhr.responseText);
}
return reject('请求失败');
}
xhr.onerror = ()=>{
return reject('出错了');
}
xhr.open(type,url);
xhr.send(data ? data:null);
});
map.push({promise:promise,request:xhr});//创建promise和xhr之间的映射关系,保存到全局的一个数组中。
return promise;//返回Promise实例对象
}
//abort 请求
function abort(promise){
for(let i = 0 ; i < map.length ; i++ ){
if ( map[i].promise === promise ){
map[i].request.abort();
}
}
}
let promise = ajax('get','/test/getUserList');
promise.then((result)=>{
console.log('成功了。', result);
},(error)=>{
console.log(error);
})
abort(promise);
let index = 0;
//仅供参考 jsonp
function jsonp(url,jsonp,successCallback , errorCallback){
let script = document.createElement('script');
let result ;
script.onload = function(){
successCallback(result);
}
script.onerror = function(){
errorCallback('出错了');
}
let callBackName = 'jsonpCallback'+index++;
script.src=url+(url.indexOf('?') >=0 ? '&':'?')+jsonp+'='+callBackName;
window[callBackName]=function(){//拿给后端进行输出执行的。
result = Array.prototype.slice.call(arguments);
}
document.head.append(script);
}
let query = ctx.request.query;
let jsonp = query.jsonp;//与后端协商的回调参数
ctx.body = jsonp+'({code:0,msg:"success"})';
<script >
//只有这一行是服务器返回的,
//script标签是document.head.append(script)时候加的
jsonpCallback0({code:0,msg:"success"});
</script>
//[trigger 触发事件]
function trigger(element,event){
if( !isString(event) ) {
return;
}
if ( element.dispatchEvent ){
let evt = document.createEvent('Events');// initEvent接受3个参数
evt.initEvent(event, true, true);
element.dispatchEvent(evt);
}else if ( element.fireEvent ){ //IE
element.fireEvent('on'+event);
}else{
element['on'+event]();
}
}
let index = 0;
//仅供参考 jsonp.abort
function jsonp(url,jsonp,successCallback , errorCallback){
let script = document.createElement('script');
let result ;
script.onload = function(){
successCallback(result);
}
script.onerror = function(){
errorCallback('出错了');
}
let callBackName = 'jsonpCallback'+index++;
script.src=url+(url.indexOf('?') >=0 ? '&':'?')+jsonp+'='+callBackName;
window[callBackName]=function(){//拿给后端进行输出执行的。
result = Array.prototype.slice.call(arguments);
}
script.abort = ()=>{
return trigger(script,'error');
};
document.head.append(script);
return script;
}
let index = 0;
//仅供参考 jsonp.abort
function jsonp(url,query,jsonp){
let script = document.createElement('script');
let result ;
let promise = new Promise(function(resolve,reject){
script.onload = function(){
return resolve(result);
}
script.onerror = function(){
return reject('出错了');
}
let callBackName = 'jsonpCallback'+index++;
script.src=url+(url.indexOf('?') >=0 ? '&':'?')+jsonp+'='+callBackName;
window[callBackName]=function(){//拿给后端进行输出执行的。
result = Array.prototype.slice.call(arguments);
}
document.head.append(script);
});
script.abort = ()=>{
return trigger(script,'error');
};
map.push({promise:promise,request:script});//创建promise和script之间的映射关系,保存到全局的一个数组中。
return promise;
}
let promise = jsonp('/test/getUserList','jsonp');
promise.then((result)=>{
console.log('成功了。', result);
},(error)=>{
console.log(error);
})
abort(promise);
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有