window.location.reload()#局部刷新网页
Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术。
Ajax = 异步 JavaScript 和 XML(标准通用标记语言的子集)。
Ajax 是一种用于创建快速动态网页的技术。
Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。[1]
通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
ajax标准的异步请求 if request.is_ajax():判断是否为ajax
<script src="{% static 'js/jquery.min.js' %}"></script>
$(function () {})=window.onload加载完成后执行
$('#dian').get(0)得到原生js元素
get请求:$.get(url,data,function (){})url地址 data字典放参数(要先创建data={}) function 回调函数
$.post()post请求
import json
result = {'a':'ok'}
result = json.dumps(result)将python字典转化为json字典
json.loads()将json字典转换为python字典
$('#zan').text()前端获取标签里面的值text(值)设置值
.html获取值于.text相同但.html可以设置标签 val()获取表单标签的值
setTimeout(function () { window.location.href='/' },5000)设置5秒自动跳转
// 异步
var email = "test@ptmind.com";
console.log(1);
jQuery.ajax({
url: "/invite/sendEmailAjax.pt",
type: "post",
dataType: "text",
async: true, 同步将次改为false // 结果:1->2->3
data: "inviteEmails="+email,
success: function(data){
console.log(2);
}
});
console.log(3); (alert(temp);
// 结果:1->3->2
关于点击收藏与不收藏的ajax
attr 和 prop 两种操作标签属性的方法,区别:attr是用来取或者设置自定义的属性 prop是用来取或者设置标签自带的属性
$(function () {
$('#love').click(function () {
{# attr 和 prop 两种操作标签属性的方法,#}
{#区别:attr是用来取或者设置自定义的属性#}
{# prop是用来取或者设置标签自带的属性#}
var lovetype = $('#love').attr('data-fav-type');
var loveid = {{ org.id }}
$.ajax({
type:'GET',
url:'{% url 'operations:user_love' %}',
data:{
lovetype:lovetype,
loveid:loveid
},
success:function (callback) {
if(callback.status == 'ok'){
$('#love').text(callback.msg)
window.location.reload()#局部刷新网页
}else{
alert(callback.msg)
}
}
})
})
});
在python中view逻辑中对应的ajax收藏代码
def user_love(request):
lovetype = request.GET.get('lovetype','')
loveid = request.GET.get('loveid', '')
#当类型和id同时存在才有可能性继续
if lovetype and loveid:
#需要在表当中去查找以前是否有这个收藏的对象
love = UserLoveInfo.objects.filter(userinfo=request.user,love_type=int(lovetype),love_id=int(loveid))
#如果表里面有这个收藏对象执行以下if语句块
if love:
#确定有这个对象,我们需要通过这个对象的收藏状态来设定收藏和取消收藏
if love[0].love_status:
love[0].love_status = False
love[0].save()
return JsonResponse({'status':'ok','msg':'收藏'})
else:
love[0].love_status = True
love[0].save()
return JsonResponse({'status': 'ok', 'msg': '取消收藏'})
#如果表里面没有这个收藏对象执行以下else语句块
else:
a = UserLoveInfo()
a.userinfo = request.user
a.love_status = True
a.love_type = int(lovetype)
a.love_id = int(loveid)
a.save()
return JsonResponse({'status': 'ok', 'msg': '取消收藏'})
else:
return JsonResponse({'status': 'fail', 'msg': '收藏失败'})