jquery 操作属性
attr("属性名") 拿到属性值或者键值对应设置属性attr("属性名","要写入的值") # 属性写入removeAttr("属性名") 从所有匹配的元素中移除指定的属性、// 写入属性$('ul a').attr('href',href);// 移除属性$('a').eq(2).removeAttr('href');// 获取元素文本
jquery 操作元素
text() 设置或返回所选元素的文本内容html() 设置或返回所选元素的内容(包括HTML标记)val() 设置或返回表单字段的值# 实例# 获取元素文本console.log($(".div1").text());// 获取元素内容 html都会打印出来console.log($(".div1").html());// val 一般会用在获取表单的值console.log($(".div1").val());# 写个复杂的获得提交的账号密码信息$("#btn").click(function () {// 获取到账号的值var user = $('#user').val();var pwd = $('#pwd').val();// 使用js代码进行校验等操作});
jquery 添加新的html内容
append() 在备选元素的结尾插入内容,最尾部添加内容prepend()在备选元素的开头插入内容,最开头处添加after() 在备选元素之后插入内容,before() 在备选元素之前插入内容# 实例$('.div1').append('<h1>python</h1>');// 在该元素开始的位置添加内容 在元素内部$('.div1').prepend('<h1>python</h1>');// 元素之后添加 在所选元素之外$('.div1').after('<div>这是在元素之后添加</div>');// 元素之前添加 ,在所选元素之外$('.div1').before('<div>元素之前添加</div>');
删除 元素/内容
remove() 删除被选元素(及其子元素) 相当于彻底清除empty() 从被选元素中删除子元素 相当于清空下面的子元素# 实例// 删除元素 选中的节点和子节点一并被删掉 移除$('ul').remove();// ul 在页面上仍然存在,但是ul下面的子节点全部被删掉 子元素置空$('ul').empty();
ajax
ajax 的技术目的是让js发送http请求,与后台进行通信
获取数据源和信息,ajax技术原理是实例化xmlhttp对象
使用此对象与后台通信,ajax通信过程不会影响后续js代码的执行
从而实现异步
同步与异步,
同步即指一件事干完之后再干下一件事,
异步,干一件事的同事进行另外一件事
局部刷新和无刷新
ajax可以实现局部刷新,也叫做无刷新,无刷新值得是整个页面不刷新,只是局部刷新
ajax可以自己发送http请求,不用通过浏览器的地址栏,所以页面整体不会刷新
ajax获取到后台数据,更新页面显示数据的部分,就做到了页面局部刷新
同源策略
ajax 请求的页面或资源只能是同一个域下的资源,不能是其他域的资源
这是在设计ajax时基于安全的考虑,
ajax使用方法
常用参数
1 url请求地址
2 type 请求方式 默认是GET 常用的还有POST
3 dataType 设置返回的数据格式,常用的事json格式,也可以设置为html
4 data 设置为发送给服务器的数据
5 success 设置请求成功后的回调函数
6 error 设置请求失败后的回调函数
7 async 设置是否异步,默认 true 表示异步
主要涉及jquery.ajax
其实就相当于从页面上发送http请求,
应用实例
加密传输数据, submit提交表单是不会进行加密的
先通过js代码加密,然后通过ajax发送请求。
ajax实例
// JS// 页面加载完成之后执行的的代码$(function () {// ajax请求//给前端页面上的提交按钮绑定方法$('#btn').click(function () {// 先获取账号var acc = $('#user').val();// 获取密码var pwd = $('#pwd').val();之后进行加密方法(略过) 发送ajax请求花括号括起来的事一个js对象$.ajax({url: "/login", # 发送请求目标地址data:{ # 如果有要求的数据就需要写'user':acc,'pwd':pwd},type:'POST', # 也可以使用method关键字传dataType:'json', // 期望后台返回的数据类型,按照json的格式解析浏览器返回的数据# 如果对方是可以允许跨域请求的接口,返回的类型要设置成jsonpsuccess:function (data) {# data是后台返回的数据,通过一个形参传入匿名函数进行逻辑处理// 请求成功的时候 success之后的函数会被触发 请求成功之后,后台返回数据会作为参数传入到// success 后的回调函数中//data.code // 就相当于取返回结果的json中的code字段if (data.code == "1"){alert(data.msg);}else{// this代表当前节点位置,当前绑定按钮,即按钮next的节点,// append 在元素内部添加内容 达到异步发送请求返回结果给页面$(this).next().append(data.msg);alert(data.msg); // 编写的时候可以直接使用alert弹框来校验功能}},error:function () {//失败的话调用此处的回调函数,与下面的done跟fail一样}})
上面写法是方式1, 接着看方式2
ajax在发送请求的时候除了传递参数之外会自动生成两个参数传递过去
1个是回调函数,另一个是_=后面跟的一串数字的数据
如果目标后面是可以接受跨域请求的话,会将返回的数据与回电函数名称,字符串数据打包成一个jsonp格式的数据返回
# 如果需要跨域请求的话 dataType需要携程jsonp
下面来看第二种写法
$.ajax({url: '/login',type: 'POST',data: {'user': acc,'pwd': pwd},dataType: 'json'}).done(function (data) { // 成功会进入done方法if (data.code == "1") {alert(data.msg)} else {$(this).next().append(data.msg)}}).fail(function () { // 失败会进入fail方法alert('请求失败')})});
看一个案例
$.ajax({url: 'pro_list',method: 'get',dataType: 'json',}).done(function (data) {var pro = $('#pro');var res = data.data;for (i in res) {// res结构为 列表,内含对象// 直接打印i的话是下标console.log(res[i]); // 拿到的事对象var option = '<option value=' + res[i].id + '>' + res[i].title + '</option>';pro.append(option)}console.log(data);// change 事件 监测元素值是否发生变化pro.change(function () {// 往接口列表发送ajax请求// 参数 pro_idvar pro_id = pro.val();console.log(pro_id);$.ajax({url: '/interface',data: {"pro_id": pro_id},method: 'POST',dataType: 'json'}).done(function (data) {// 首先获取到目标下拉框的元素var interface = $('#interface');// 成功的话就往option里面进行添加if (data.code === "1") {var res = data.data;// 在添加到下拉框之间先清空interface.empty();for (i in res) {var option = '<option value=>' + res[i].name + '</option>';interface.append(option)}}})})});
