赞
踩
$.get()
语法格式:$.get(url,[data],[callback])
$.get('http"//www.baidu.com',function(res) {
console.log(res);//这里的res是服务器返回的数据
})
$.get()函数发起带参数的请求
$.get('http"//www.baidu.com', {id : 1},function(res) {
console.log(res);//这里的res是服务器返回的数据
})
$.post()
用法和get方式一样$.ajax()
基本语法格式:$.ajax({
method:"" // 请求的方式,是提交数据还是获取数据
url: "" //请求的url地址
data: { } //这次请求携带的参数
success : function(res) { } //请求成功之后的回调函数
async: true,//默认是true,所有的请求均为异步请求,如果是同步请求,值为false
dataType: //预期服务器返回的数据类型。如果不指定,jQuery将自动根据HTTP包MIME信息来智能判断。可以是text、json、jsonp、html、xml、script
jsonp: //在一个jsonp请求中重写回调函数的名字,可以是callback
jsonpCallback: //为jsonp请求指定的回调函数名
error: //失败之后的回调函数
complete: //无论成功还是失败都会触发的回调函数
timeout: //请求超时时间(毫秒)
})
resetui()函数
重置滚动条的位置action
:向何处发送表单数据target
:在何处打开action的url地址 _blank 在新窗口打开 _self 默认,在相同的框架中打开
method:
以何种方式把表单数据提交到action url中 get方式数据暴露,默认情况
enctype
: application-x-www-form-urlencoded 默认 multipart/form-data
在使用包含文件上传控件的表单时,必须使用该值 text/plain 空格转换为‘+’加号,但不对特殊字符进行编码
jqsubmit jqonsubmit
$("form").submit(function(){});
$("form").on("submit",function() {})
e.preventDefault()
jquery中阻止默认行为:return false
js中阻止事件捕获和事件冒泡行为 e.stopPropagation()
serialize()函数
快速获取表单数据,每个表单元素必须设置name
属性<form>
<input type="text" class="form-control" name="uname" placeholder="请输入书名">
<input type="password" class="form-control" name="pwd" placeholder="请输入书名">
</form>
$("form").serialize();//输出结果是uname='用户在text填入的内容'&pwd="用户在password框填入的内容"。这种方式叫做查询字符串的方式
如果是使用Ajax方式请求,表单元素的值尽量设置和接口文档中的参数名字一样
reset()函数
快速清空表单的值,这个函数方法属于原生js,所以获取的jQuery元素要转换成js $('form')[0].reset()
<script src="templat-web.js"></script>
注:只要导入了模板引擎,在window全局下就存在一个template函数
<script>
var data={name:"张三"}
<script>
<script type="text/html" id="dyId">
<h1>{{定义数据对象的属性名 name}} {{第二个数据}}</h1>
</script>
var htmlStr=template("dyId",data);//返回值就是我们替换之后的模板了
<div class="cont">页面结构</div> 页面上的容器
渲染数据:$('.cont').html(htmlStr);//页面显示结果是“页面结构 张三”
书写顺序:导入—页面容器—定义模板—定义数据—调用模板—渲染结构
在atr-template模板引擎中,所有的语法都要有闭合标签
3. 标准语法-输出:双花括号 {{}}
,可以输出变量、对象属性、三元表达式、逻辑判断、加减乘除
4. 原文输出:value值中包含HTML标签,需要使用原文输出来解析HTML标签 {{@ value}}
5. 标准语法-条件输出
6. 标准语法-循环输出
第一种方式
{{each 遍历的循环项 item key}}
{{item}}循环项 {{key}}索引
{{/each}}
第二种方法
{{each 遍历的循环项}}
{{$index}}循环的索引
{{$value}}循环的值
{{/each}}
{{需要过滤的值value | 调用的(过滤器)函数名filteName}}
,上一个的输出做为下一个的输入。中间用管道符隔开template.defaults.imports.(过滤器的名字)filteNmae=function(value) {return 处理的结果}
// 定义过滤器
template.defaults.imports.dateFormat=function(dtStr) {
var dt=new Date(dtStr);
var y=dt.getFullYear();
var m=pad(dt.getMonth()+1);
var d=pad(dt.getDate())
var hh=pad(dt.getHours());
var mm=pad(dt.getMinutes());
var ss=dt.getSeconds();
return `${y}-${m}-${d}${hh}:${mm}:${ss}`
// return y+'-'+ m +'-' +d+ hh+':'+mm +':' +ss;
}
var xhr=new XMLHttpRequest()
open
函数 ,指定请求地址与URL地址 xhr.open('GET','URL地址')
send
函数,发起Ajax请求 xhr.send()
onreadystatechange
事件xhr.onreadystatechange=function() {
//监听xhr对象的请求状态readystate;与服务器响应状态status
if(xhr.readyState ===4 && xhr.status===200) {
console.log(xhr.responsetText);//打印服务器响应回来的数据
}
}
xhr里面的readyState属性,用来表示当前Ajax请求所处的状态
0:对象已经创建,但未调用open方法
1:open()方法已经调用
2:send方法已经被调用 ,响应头也已经被接收
3:数据接收中,此时response属性中已经包含部分数据
4:Ajax请求完成,这意味着数据传输已经彻底完成或失败
查询字符串
xhr.open('GET','http://liulongbin:3006/api/getbooks?id=2')
;//id是参数,跟在?后面,多个参数**id=2&uname=zhangsan
**encodeURI()
decodeURI()
var xhr=XMLHttpRequest()
xhr.open('POST','URL地址')
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded')
xhr.send('bookname=水浒传&author=施耐庵')
xhr.onreadystatechange=function() {
//监听xhr对象的请求状态readystate;与服务器响应状态status
if(xhr.readyState ===4 && xhr.status===200) {
console.log(xhr.responsetText);//打印服务器响应回来的数据,并且是一个字符串
}
}
英文的双引号包裹
的,value的数据类型可以是数字、字符串、布尔值、null、数组、对象6种类型 ,不允许出现undefined和function{"hobby":["吃饭","睡觉"]}
["java","python","php"]
JSON.parse('待转换的字符串')
反序列化JSON字符串JSON.stringify()
序列化 // 把对象转换成字符串
var b={a:"nihao",b:"转换",c:"字符串"}
var t=JSON.stringify(b);
console.log(t);//结果{"a":"nihao","b":"转换","c":"字符串"}
// 把字符串转换成对象
var s='{"a":"hello"}'
var f=JSON.parse(s);
console.log(f);//{a: "hello"}
function resoveData(data) {
var arr=[]
for(var k in data) {
var str=k +'=' +data[k]
arr.push(str)
}
return arr.join('&')
}
<script> // 使用自己封装的Ajax myAjax({ method:'GET', url:'http://www.liulongbin.top:3006/api/news', data:{ id:1 }, success:function(res) { console.log(res); } }) // 1.把传入的data数据转化成查询字符串 function resolveStr(data) { var arr=[] for(let k in data) { var str=k+'='+data[k] arr.push(str) } return arr.join('&'); } // 2.封装自己的Ajax function myAjax(options) { var xhr=new XMLHttpRequest(); var qs=resolveStr(options.data);//传入的数据 // 2.1判断请求类型 if(options.method.toUpperCase()=== 'GET') { xhr.open(options.method,options.url+'?'+qs) xhr.send() }else if(options.method.toUpperCase()==='POST') {//toUpperCase()输入的字母变成大写 xhr.open(options.method,options.url) xhr.setRequestHeader('Content-Type','application/x-www-form=urlencoded') xhr.send(qs) } // 2.2监听onreadystatechange事件 xhr.onreadystatechange=function() { if(xhr.readyState === 4 && xhr.status ===200) { var result=JSON.parse(xhr.responseText) console.log(result); } } } </script>
var fd=new FormData()
fd.append('uname','zs')
var xhr=new XMLHttpRequest()
xhr.open('get',url地址)
http://www.liulongbin.top:3006/api/formdataxhr.send()
FormData也获取表单元素的值:获取表单元素,var fd=new FormData(form)
form是通过表单元素中的name属性来获取的
<---ui结构---> <form action="" id="fd"> <input type="text" id="uname" name="uname"> <input type="password" name="number" id="phone"> <button type="submit">提交</button> </form> var form=document.querySelector('form');//这里的form只能用原生的js来获取,不能使用jQuery // var form=$('#fd') $("form").submit(function (e) { e.preventDefault(); var fd=new FormData(form); var xhr=new XMLHttpRequest(); xhr.open('post','http://www.liulongbin.top:3006/api/formdata') xhr.send(fd); xhr.onreadystatechange=function() { if(xhr.readyState === 4 && xhr.status === 200) { console.log(JSON.parse(xhr.responseText)); } } });//打印结果是测试表单结果成功,data里面存储的是网页表单元素的内容,也就是自己输入的内容
FormData的实例方法:
formData.get('key');
formData.set('key', 'value');
formData.delete('key');
formData.append('key', 'value');
<input type="file" name="" id="file1">
<button id="btnUpload">上传文件</button>
<img src="" alt="">
files
是input文件上传框获取上传文件列表的一个属性,返回的是一个数组形式,这个属性只能在原生JS里面使用,jQuery元素不能使用//1.获取文件上传按钮
var btn=document.querySelector("#btnUpload")
//2.为按钮绑定点击上传事件
btn.addEventListener('click',function() {
//3.获取到用户选中的文件列表
var files=document.querySelector('#file1').files
if(files.length <= 0) {
return alert("请选择要上传的文件")
}
//。。。。。后续业务逻辑
})
var fd=new FormData();
fd.append('avatar',files[0])
var xhr=new XMLHttpRequest();
xhr.open('post',url地址);
xhr.send(fd)
xhr.onreadystatechange=function() {
//监听xhr对象的请求状态readystate;与服务器响应状态status
if(xhr.readyState ===4 && xhr.status===200) {
document.querySlector("#img").src='请求的根路径'+data.url
}else {
console.log(data.message)}
}
onprogress
事件 中的事件对象e.lengthComputable
是一个布尔值,表示当前上传资源是否具有可计算的长度e.loaded
已传输的字节e.total
需要传输的总字节(e.loaded/e.total)*100
返回的是一个数值
使用Ajax请求,ContentTyp和processData两个属性必须设置
contentType:false
不修改Content-Type属性,使用Formdata中原有的processData:false
$(document).ajaxStart(callback)
会监听当前文档下的所有Ajax请求 和ajaxStop(callback)
只专注于网络数据请求,更加轻量化
1.
axios.get(‘url’,{params:{参数}}).then(callback)
var url='http://www.liulongbin.top:3006/api/get', var paramData={name:'zs',sex:"男"}; // axios发起get请求 axios.get(url,{params:paramData}).then(function(res) { console.log(res.data);//服务器响应回来的数据res.data }); // 2.post请求方式的唯一不同之处在于参数的书写方式 axios.post(url,paramData).then(function(res) { console.log(res.data); }) // 3.综合写法 axios({ method:'', url:'', params:{get请求参数}, data:{post请求参数} }).then(function(res) {console.log(res.data);})
//定义本地的一个函数
function add(data) {
console.log(data)
}
<script src='http://ww.liulongbin.top:3006/api/getbooks?callbck=add'>
//http://ww.liulongbin.top:3006/api/getbooks?callbck=调用自定义的函数名(add)
</script>//非同源接口要返回一个函数调用,这个函数已经在本地写好了
$.ajax({
method:'',
url:'',
jsonp:'callback',
jsonpCallback:'abc'默认是找的success
})
填写属性dataType:'jsonp'
发送到服务端的参数名称,jsonp:‘callback’
自定义的回调函数名称,默认jQueryXXXX格式
jsonpCallback:‘abc’
http://ww.liulongbin.top:3006/api/getbooks?jsonp?name=zs&&pwd=123
解决跨域的方法:JSONP、CORS、服务器代理
//1. 定义防抖
var timer=null;
//定义延时器的id
function debounceSearch(kw) {
timer=setTimeout(function() {
alert(11);//这里是防抖执行的最后事件
},500)
}
// 3.定义事件触发
$("input").on("keyup", function () {
clearTimeout(timer);//如果时间没到500,就清除上一次的延时器,不执行回调,也就不会弹出11
debounceSearch(kw);//在用户最后确定输入结果时,才会发起请求,避免了多次请求
}
比如淘宝的搜索框,如果用户每一次输入内容都在500毫秒内,那么前几次输入的内容不会发起请求,只有在最后一次才会发起请求。原因是用户触发了鼠标按下事件,这个事件不会立即执行,会在500毫秒之后执行,但是用户在500毫秒内又触发了鼠标按下事件,所以要重新开始计时。直到用户在500毫秒内不再触发鼠标按下事件,才会执行回调函数,也就是才会向服务器发起请求
200
请求成功,一般用于get和post请求201
请求成功并且创建了新的资源,一般用于post请求和put请求301
请求资源已被永久移动到新的URL,返回信息会包括新的URL,浏览器会自动定向新的URL302
与301类似,但是资源只是被临时移动,客户端应继续使用原有的URL304
未修改。所请求的资源未修改,客户端通常会缓存访问过的资源400
语义有误或者请求参数有误401
当前请求需要用户验证404
服务器无法根据客户端的请求找到资源,一般情况下是路径不正确405
请求接口的不正确408
请求超时500
服务器内部错误,无法完成请求501
服务器不支持该请求方法503
由于超载或系统维护,服务器暂时无法处理客户端的请求Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。