一. 什么是AJAX?

ajax是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。

二. 在项目中怎么运用AJAX?

项目主要文件夹目录有img文件夹,css文件夹,js文件夹,如果你要运用到ajax,那么你可以在js里面建立一个js文件存放ajax代码,在相应html页面引入这个js文件即可。

三. AJAX的结构怎么写?

        //ajax的结构
$(function(){
$.ajax({
url:"https://www.xxxx.com/shop/xxxxxxx/", //放置你的接口
type : "GET", //接口的请求方式(get/post)
async : false, //是否异步
success : function(data) {
console.log("------成功了")
},
error : function(err) {
console.log("------出错了",err)
}
});
})

四. AJAX的接口参数怎么传?

1.接口的形式是:https://www.xxxx.com/shop/xxxxxxx/?userId=123&psw=abc123&name=骑马行天下 ;

2.根据后台给的接口文档来选择上传哪些参数;

3.参数从哪里获取呢?

a.从你该接口相对应的html页面里面获取;

b.获取形式为:var psw = $("input[name='phones']").val()   //这种是获取到input输入框里面的值

var name = $("#username").html()    //这种是获取到标签里面的内容

代码如下:

    //例如登录接口要传手机号和密码两个参数
$("#denglu").click(function() {
var userinfo = {
"UserPhoneNum": '86//' + $("input[name='phones']").val(), //手机号参数
"Password": $("input[name='pwd']").val() //密码参数
} $.ajax({
url: "https://www.xxxxxx.cn/user/xxxxx/", //登录接口
data: userinfo, //整合手机号和密码的参数
type: "get",
success: function(data) {
if(JSON.parse(data).state === 201 || JSON.parse(data).state === 202) {
alert("登录失败,请前往注册")
} else {
alert("登录成功")
window.location.href = 'index.html';
}
},
error: function() {
alert("登录失败");
}
}); });

五. 怎么用AJAX在页面渲染接口数据?

1.首先在html页面写出能够呈现死数据的html代码;

2.然后书写商品列表接口,获取到里面的json数组并呈现到页面;

代码如下:

            //商品接口在页面渲染数据
$(function(){
$.ajax({
url:"https://www.xxxxxx.com/shop/xxxxxxx/",
type : "GET",
async : false,
success : function(data) {
var obj=JSON.parse(data).list; //定义一个obj,获取到接口数据为list的数组
var str=""; //定义一个空文件
$(".books").empty(); //把你要渲染的数据那块给清空,然后加入接口数据变成活数据 if(obj!=null){
//遍历obj数组
$(obj).each(function(i,v){
//你之前写的html里面的死数据代码
str+='<a class="to-product" target="_blank">';
str+='<div class="books-con-lists bookarr">';
str+='<img src='+v.picPath+' />';
str+='<p class="p1">'+v.goodsName+'</p>';
str+='<p class="p2">'+v.goodsresume+'</p>';
str+='<p class="p3"><span class="p4">¥</span>'+v.price+'.00'+'</p>';
str+='</div>';
str+='</a>'; });
$(".books").append(str); //使用append参数把内容加上去
} },
error : function(err) {
console.log("渲染出错了",err)
}
});
})

六. 怎么异步刷新呈现在页面上面的内容?

例如:如果你有一个获取收货地址的接口,你呈现在页面上面,然后你重新添加一条,收货地址列表没有改变,重新刷新页面才能改变,如果你要点击保存就刷新掉收货地址列表而不用刷新整个页面怎么实现呢?

代码如下:

$(function() {
    InitData(); //加载收货地址
}) //收货地址呈现数据列表接口
function InitData() { $.ajax({
url: "https://www.xxxxx.com/user/xxxxxx/", //收货地址
type: "get",
async: true,
success: function(data) {
}
})
}
 $("#jiaru").click(function() {

        $.ajax({
url: "https://www.xxxxxx.cn/user/xxxxx/", //重新加入一条收货地址接口
type: "get",
success: function(data) {
InitData(); //加入成功后,再次调用一次查询收货地址接口,就能实现异步刷新
},
error: function() {
alert("加入失败");
}
}); });
 

七. 登录成功后获取到用户userId怎么在后面的接口引用到呢?

1.首先登录成功后返回给你一个用户id,参数比如说是userId,你可以cookie保存一下然后到后面获取到;

2.怎么cook保存呢?

a.建立一个全局js文件,全局定义一下cookie:

//Cookie全局
function setCookie(name,value)
{
var Days = 30;
var exp = new Date();
exp.setTime(exp.getTime() + Days*24*60*60*1000);
document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
} function getCookie(name)
{
var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
if(arr=document.cookie.match(reg))
return unescape(arr[2]);
else
return null;
}

b.在登录接口页setCookie保存到userId:

//登录
$("#denglu").click(function() { $.ajax({
url: "https://www.xxxxxx.cn/xxxxx/login/",
data: "",
type: "get",
success: function(data) {
var userId = JSON.parse(data).UserID; //从接口返回值里面取到userId
setCookie("UserId", userId) //set保存一下方便后面取到
if(JSON.parse(data).state === 201 || JSON.parse(data).state === 202) {
alert("登录失败,请前往注册")
} else {
alert("登录成功")
window.location.href = 'index.html';
}
},
error: function() {
alert("登录失败");
}
}); });

c.在其他页面getCookie获取到userId:

var userId = getCookie("UserId");   //在上面提到的接口传值,getcookie获取到userId

3.sessionStorage保存方法:

sessionStorage.obj = JSON.parse(data).OrderID;

八. 没有接口的情况下,怎么把一个页面的值传到其他页面?

1.url传值方法:

$(".to-product").eq(0).click(function(){
$(".to-product").eq(0).attr("href","bookdetail/productdetail1.html?goodsID="+obj[0].goodsID+"");
})

2.其他页面取值:

function getUrlParam(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
var r = window.location.search.substr(1).match(reg); //匹配目标参数
if(r != null) return unescape(r[2]);
return null; //返回参数值
}
var goodsID = getUrlParam('goodsID'); //接收URL中的参数booksId

3.重点注意:这种方法不利于上传价格之类容易篡改信息的数据,建议其他数据通过接口的方法获取;

九. 怎么清空cookie保存的数据(比如退出登录效果)

//获取到用户ID
var userId = getCookie("UserId");
//判断一下userId是否为空
if(userId !=null){
$(function(){
//点击按钮退出登录
$(".header-con").children(".p2").children("a:eq(1)").click(function(){
clearAllCookie(); //清空cookie的方法
})
})
}else{ } //清除所有cookie函数
function clearAllCookie() {
var keys = document.cookie.match(/[^ =;]+(?=\=)/g);
if(keys) {
for(var i = keys.length; i--;)
document.cookie = keys[i] + '=0;expires=' + new Date(0).toUTCString()
}
}

如果只需要清空用户ID,则这样写:

//清除所有cookie函数
function clearAllCookie() {
var keys = document.cookie.match(“ID”);
if (keys) {
for (var i = keys.length; i--;)
document.cookie = keys[i] + '=0;expires=' + new Date(0).toUTCString()
}
}

十. 怎么获取接口中单个列表信息的数据?

1.遍历列表获取到该商品的信息,取到想要得到的id或者价格:

//遍历
$('#txt-list tr').each(function() { var _value = $(this).find('td').next(".isCurrent").text();
if(parseInt(_value) == 1) { } else { }
});

2.parent和next方法等:

var addressID = $(this).parent("a").parent("td").next("td").next("td").html();

十一. 怎么拼接字符串并放到一个数组里面?

1.先创建一个新的对象,遍历json数组,然后拼接完成之后,去掉拼接进去的数组[ ]符号以及字符串的\符号:

        var goodsDetail = new Array();
$('#s-infos li').each(function(index){
if($(this).find('div').children('.mh-dxone').prop('checked')){
var goodsID = $(this).find('div').next(".goodsID").text(),
quanlity = $(this).find('div').next(".shopcart-info-num").children(".cartnum").val();
goodsDetail.push('[{"goodsID":' + goodsID + ',"quanlity":' + quanlity + '}]');
}
})
var straaa = JSON.stringify(goodsDetail);
var strbbb = straaa.replace('"[', "");
var strccc = strbbb.replace(']"',"").replace(/[\\]/g,'');

十二. 浏览器后退按钮

这个在注册或者登陆的时候是一个普遍的问题,登陆之后,跳转到另外一个页面,我的鼠标有两个侧键,是用于前进和后退的,有时候会误点侧键,这个时候页面又会回到之前的登录页面,但事实是用户已经登录了,所有页面的状态都应该是已登录的,不管什么情况下都不应该让用户在看到这个页面。用户的点击操作会引发上面的问题,而程序 history.go(-1) & history.back() 也会有一样的bug。

这样的问题处理方案比较简单,ajax 拿到 success 的状态码时立刻做跳转,但是这里不能用 window.location.href="index.html",这样浏览器还是会记录这个登录历史,应该使用 window.location.replace("index.html"),替换当前历史记录。

十三. ajax怎么用表单提交数据

$(".subbookorder").click(function() {
//开始上传文件 新建一个formData
var param = new FormData();
param.append("totalPrice", totalprice);
// //通过append向form对象添加数据
param.append("discountId", 1);
param.append("purchaseComment", '');
param.append("paymentContent", '');
param.append("details", JSON.stringify(orderData)); $.ajax({
type: "post",
url: "http://manage.xxxxx.cn/user/xxxxxx/",
data: param,
cache: false,
processData: false,
contentType: false,
headers: {
"Accept": "application/json",
Authorization: "Bearer " + getCookie("token"),
}, success: function(data) {
console.log(data)
window.location.href = "payOrder.html";
},
error: function(e) {
console.log("err");
}
}); })

十四. ajax的headers的方法

headers: {
"Accept": "application/json",
Authorization: "Bearer " + getCookie("token"),
"Content-Type": "application/json",
"Content-Type": "multipart/form-data",
},

十五. 总结

ajax介绍就暂时到这里告一段落了,如果博文有什么错误或者不懂的地方,欢迎在博文下面留言,博主有时间将一一解答,同时ajax从零基础到实战也不是看看就能理解的,希望大家能够边自己实践边理解,这样更有利于大家成长,谢谢!

ajax从零基础到实战的更多相关文章

  1. 零基础入门 实战mpvue2.0多端小程序框架

    第1章 课程快速预览(必看!!!)在这一章节中,老师讲带领你快速预览课程整体.其中,涉及到为什么要做这么一门实战课程.制作一个小程序的完整流程是怎么样的,以及如何做项目的技术选型. 第2章 30 分钟 ...

  2. Scala实战高手****第4课:零基础彻底实战Scala控制结构及Spark源码解析

    1.环境搭建 基础环境配置 jdk+idea+maven+scala2.11.以上工具安装配置此处不再赘述. 2.源码导入 官网下载spark源码后解压到合适的项目目录下,打开idea,File-&g ...

  3. 【若泽大数据】玩转大数据之Spark零基础到实战

    https://www.bilibili.com/video/av29407581?p=1 若泽大数据官网 http://www.ruozedata.com/ tidb 系列三:有了sparkjdbc ...

  4. MongoDB实战开发 【零基础学习,附完整Asp.net示例】

    MongoDB实战开发 [零基础学习,附完整Asp.net示例] 阅读目录 开始 下载MongoDB,并启动它 在C#使用MongoDB 重构(简化)代码 使用MongoDB的客户端查看数据 使用Mo ...

  5. 4月27号开学! 第6期《jmeter实战接口自动化+性能》课程,零基础也能学

    2019年 第6期<jmeter实战接口自动化+性能>课程,4月27号开学! 主讲老师:飞天小子 上课方式:QQ群视频在线教学 本期上课时间:4月27号-6月9号,每周六.周日晚上20:0 ...

  6. 《Android Studio开发实战 从零基础到App上线》资源下载和内容勘误

    转载于:https://blog.csdn.net/aqi00/article/details/73065392 资源下载 下面是<Android Studio开发实战 从零基础到App上线&g ...

  7. Spring Boot 2.x零基础入门到高级实战教程

    一.零基础快速入门SpringBoot2.0 1.SpringBoot2.x课程全套介绍和高手系列知识点 简介:介绍SpringBoot2.x课程大纲章节 java基础,jdk环境,maven基础 2 ...

  8. 零基础入门Python实战:四周实现爬虫网站 Django项目视频教程

    点击了解更多Python课程>>> 零基础入门Python实战:四周实现爬虫网站 Django项目视频教程 适用人群: 即将毕业的大学生,工资低工作重的白领,渴望崭露头角的职场新人, ...

  9. 零基础学HTML 5实战开发(第一季)

    開始学习html5了.趋势不得不学习啊,之前老毛说过落后就要挨打,如今是不学习就要被市场淘汰,被社会淘汰.喜欢挑战,喜欢冒险.来吧.csdn给我们提供了那么好的平台.用起来..零基础学HTML 5的实 ...

随机推荐

  1. docker怎么导出导入镜像

    https://blog.csdn.net/dest_dest/article/details/80612231 把某个docker镜像保存到本地文件,命令如下docker save -o 镜像名.t ...

  2. jQuery-关于Ajax请求async属性的说明及总结

    在jquery的ajax中如果希望实现同步或者异步,我们可以设置async(默认true,表示异步请求),下面举例说明两种请求方式的区别. 1.后台代码 public JsonResult GetDa ...

  3. 点击input消除默认背景颜色:focus

    1.在谷歌浏览器会出现默认点击input框黄色背景,如何去除? //消除google浏览器黄色框 input:-webkit-autofill, input:-webkit-autofill:hove ...

  4. 双绞线的制作(常用568B)

    EIA/TIA的布线标准中规定了两种双绞线的线序568A与568B 标准568A: 绿白—1  绿—2  橙白—3  蓝—4  蓝白—5  橙—6  棕白—7  棕--8 标准568B: 橙白—1   ...

  5. Error: Cannot find module 'gulp-sass'

    刚才首次启动ionic的时候,给我报了个这:Error: Cannot find module 'gulp-sass' 应该是缺少gulp-sass模块了,可又不敢贸然装,直接百度: stackove ...

  6. django入门-静态文件-part6

    尊重作者的劳动,转载请注明作者及原文地址 http://www.cnblogs.com/txwsqk/p/6517553.html 完全翻译自官方文档 https://docs.djangoproje ...

  7. 【微信小程序】——rpx、px、rem等尺寸间关系浅析

    最近开发微信小程序,在写样式表的时候发现用PX的效果不太理想,而官方文档用rpx来做响应式布局单位,就仔细研究了下,在此做个小总结: 这里先引用官方定义的尺寸单位‘rpx’:可以根据屏幕宽度进行自适应 ...

  8. 部署LVS-NAT群集

    案例环境 LVS调度器作为Web服务器池的网关,LVS两块网卡,分别连接内外网,外网地址172.16.16.172.24,同时也作为整个群集的VIP,内网地址为192.168.7.21-24/24,是 ...

  9. Oracle的常用修改表及字段的语句

    单行注释:-- 多行注释:/* */ Oracle中修改表结构 增加字段     ALTER TABLE table_name ADD column_name data_type; 删除字段     ...

  10. 【2】JMicro微服务-Hello World

    如非授权,禁止用于商业用途,转载请注明出处作者:mynewworldyyl 1. 首先完成 JMicro微服务-RPC体验 的1到5步. 按默认方式启动ZK及Redis: JDK需要Java8及以上. ...