一、Ajax请求
1、jQuery Ajax请求
let ajaxTimeOut = $.ajax({ //将网络请求事件赋值给变量ajaxTimeOut
url: "/api_v1.1/apiPackage/knowKeyWord",
type: "GET",
dataType: "json",
data: {
"knowcontent": this.state.title + this.state.description,
},
timeout: 2000, //通过timeout属性,设置超时时间
success: function (data) {
console.log("获取关键字成功");
console.log(data);
}.bind(this),
error: function (xhr, status, err) {
}.bind(this),
complete: function (XMLHttpRequest, status) { //当请求完成时调用函数
if (status == 'timeout') {//status == 'timeout'意为超时,status的可能取值:success,notmodified,nocontent,error,timeout,abort,parsererror
ajaxTimeOut.abort(); //取消请求
Modal.warning({ //超时提示:网络不稳定
title: '友情提示',
content: '网络不稳定',
});
}
}
});
2、jQuery Ajax请求
$.ajax({
url:"https://heidongbuhei.github.io/test/pages/"+pagrUrl,
type:"get",
data:{},
async:true,
dataType:"html",
beforeSend:function(){
$(".loading-box").show();
},
complete:function(){
$(".loading-box").hide();
},
success:function (data) {
console.log(data);
$(".change-part").html(data); },
error:function (data) {
console.log(data.status);
}
})
跨域支持:
dataType: 'jsonp',
crossDomain: true,
代码如下:
$(document).ready(function(){
$("button").click(function(){
$.ajax({
url:"http://t.weather.sojson.com/api/weather/city/101220101",
type:"get",
data:{},
async:true,
dataType: 'jsonp',
crossDomain: true,
beforeSend:function(){
$(".loading-box").show();
},
complete:function(){
$(".loading-box").hide();
},
success:function (data) {
console.log(data);
$(".change-part").html(data); },
error:function (data) {
console.log(data.status);
}
})
});
});
按钮:
<button>切换</button>
二、jQuery.extend
1、jQuery.extend类方法:Query本身的扩展方法。
<script>
$.extend({
print1:function(name){ //print1是自己定义的函数名字,括号中的name是参数
console.log(name)
}
});
$.print1("坤") ; //调用时直接$.函数名(参数);
</script>
2、jQuery.fn.extent()对象方法: jQuery 所选对象扩展方法。
<body>
<input type="text">
<script>
$.fn.extend({
getMax:function(a,b){
var result=a>b?a:b;
console.log(result);
}
});
$("input").getMax(,); //调用时要$(标签名).函数名();
</script>
</body>
3、一般情况下,jQuery的扩展方法写在自执行匿名函数中(原因:在js中是以函数为作用域的,在函数中写可以避免自己定义的函数或者变量与外部冲突)。
<script>
(function(){
$.extent({
print1:function(){
console.log();
}
})
})();
</script>
三、JavaScript prototype 属性
prototype 属性允许您向对象添加属性和方法
注意: Prototype 是全局属性,适用于所有的 Javascript 对象。
(function($){
Date.prototype.Format = function (fmt) { //author: meizz
var o = {
"M+": this.getMonth() + , //月份
"d+": this.getDate(), //日
"h+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$, (this.getFullYear() + "").substr( - RegExp.$.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$, (RegExp.$.length == ) ? (o[k]) : (("" + o[k]).substr(("" + o[k]).length)));
return fmt;
}
})(jQuery);
使用方式:
(new Date()).Format("yyyy-M-d h:m:s")
输出结果:
2018-06-07 23:26:22
四、JQuery关于(function($){ })(jQuery)匿名函数的解析
(function($){ })(jQuery)
:执行(jQuery)函数,并把jQuery对象作为实参,然后就会自动调用(function ($) {...}()这个匿名函数,并把实参传递给匿名函数,作为匿名函数的形参。(function ($) {
alert("我执行了");
})(jQuery);
等同于
function callfunc($) {
alert("我执行了");
}
callfunc(jQuery);
效果演示:
事例演示
相当于定义了一个参数为info的匿名函数,并且执行("CoderZB")的同时,将CoderZB作为参数来,就会自动调用这个(function (info) {})匿名函数.最后面的()是调用匿名函数并将参数传递给匿名函数
(function (info) {
alert(info);
})("CoderZB");
其实就是这种形式。
function infomationFunc(info) {
alert(info);
};
infomationFunc("CoderZB");