首页 > 编程语言 >Python3项目初始化10-->前端基础jquery、ajax,sweetalert--更新用户改造

Python3项目初始化10-->前端基础jquery、ajax,sweetalert--更新用户改造

时间:2022-09-03 22:45:19浏览次数:82  
标签:jquery jQuery errors form 10 -- ajax user result

33、JS基础-ajax_post
截止目前,完成了登录,创建和删除,“编辑”这块还是老的信息。
打开
a、点击 编辑 =>(内容) => dialog
b、内容 =>
后端 ajax
页面上 遍历用户时候 button(id)
c、jQuery(selector).val(value)
d、dialog.modal('show')

编辑,提交
a、jQuery(form).serializeArray()
b、jQuery.post()
c、成功 提示sweetalert 关闭sweetalert 关闭dialog 刷新页面
d、失败 提示sweetalert
开始操作:
路由url:
path('get/ajax', views.get_ajax, name='get_ajax'),
path('update/ajax', views.update_ajax, name='update_ajax'),

视图index:
from django.core.exceptions import ObjectDoesNotExist
def get_ajax(request):
if not request.session.get('user'):
return JsonResponse({'code': 403})
uid = request.GET.get('id', '')
try:
user = User.objects.get(id=uid)
return JsonResponse({'code': 200, 'result': user.as_dict()})

except ObjectDoesNotExist as e:
return JsonResponse({'code': 400, 'errors': {'id': '用户id不存在.'}})
#####
def update_ajax(request):
if not request.session.get('user'):
return JsonResponse({'code': 403})
is_valid, user, errors = UserValidator.valid_update(request.POST)
if is_valid:
user.save()
return JsonResponse({'code': 200})
else:
return JsonResponse({'code': 400, 'errors': errors})
###
index配置
...
<td>
<a class="btn btn-success btn-xs btn-edit-user" data-id="{{ user.id }}" href="javascript:void(0)">编辑</a>
{% if request.session.user.id != user.id %}
...
<div class="modal fade" id="dialog-edit-user" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="myModalLabel">用户编辑</h4>
</div>
<div class="modal-body">
<form class="form-horizontal form-edit-user">
{% csrf_token %}
<input type="hidden" name="id" value=""/>
<div class="form-group">
<label class="control-label col-md-3">用户名:</label>
<div class="col-md-9">
<input type="text" class="form-control" name="name" value="" />
</div>
</div>
<div class="form-group">
<label class="control-label col-md-3">联系方式:</label>
<div class="col-md-9">
<input type="text" class="form-control" name="tel" value="" />
</div>
</div>
<div class="form-group">
<label class="control-label col-md-3">年龄:</label>
<div class="col-md-9">
<input type="text" class="form-control" name="age" value="" />
</div>
</div>
<div class="form-group">
<label class="control-label col-md-3">性别:</label>
<div class="col-md-9">
<label class="radio-inline"><input type="radio" name="sex" value="1" checked="checked"/>男</label>
<label class="radio-inline"><input type="radio" name="sex" value="0" />女</label>
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
<button type="button" class="btn btn-primary btn-update-user">更新</button>
</div>
</div>
</div>
</div>
...
jQuery('#table_user').on('click', '.btn-edit-user', function () {
var id = jQuery(this).attr('data-id');
var form = jQuery('.form-edit-user');
jQuery.get("{% url 'user:get_ajax' %}", {'id':id}, function (result) {
if(result['code'] == 200){
form.find('[name=id]').val(result['result']['id']);
form.find('[name=name]').val(result['result']['name']);
form.find('[name=tel]').val(result['result']['tel']);
form.find('[name=age]').val(result['result']['age']);
//form.find('[name=sex]').val(result['result']['sex']?1:0);
if(result['result']['sex']){
form.find('[name=sex][value=1]').prop('checked', true);
}else {
form.find('[name=sex][value=0]').prop('checked', true);
}
jQuery('#dialog-edit-user').modal({
show: true,
backdrop: 'static',
keyboard: false
})

} else if (result['code'] == 400){
//alert('验证失败...');
var errors = []
jQuery.each(result['errors'], function (k,v) {
errors.push(v)
});
//alert(errors.join('\n'))
swal('验证失败', errors.join('\n'), 'error')
}else if (result['code'] == 403){
swal({
title: '未登录',
text: "未登录",
timer: 2000,
showConfirmButton: false
})
}
}, 'json');
});
jQuery('.btn-update-user').on('click', function () {
//var form = jQuery('.form-edit-user');
//console.log(form.serializeArray())
var data = jQuery('.form-edit-user').serializeArray();
jQuery.post("{% url 'user:update_ajax' %}", data, function (result) {
console.log(result);
if(result['code'] == 200){
swal({
title: "成功",
text:'',
type: "success",
closeOnConfirm: false
}, function () {
jQuery('#dialog-user-create').modal("hide");
//关闭sweetalert
swal.close();
/*刷新table*/
window.location.reload()
})
} else if (result['code'] == 400){
//alert('验证失败...');
var errors = []
jQuery.each(result['errors'], function (k,v) {
errors.push(v)
});
//alert(errors.join('\n'))
swal('验证失败', errors.join('\n'), 'error')
}else if (result['code'] == 403){
swal({
title: '未登录',
text: "未登录",
timer: 2000,
showConfirmButton: false
});
}
}, 'json');
});
</script>
页面访问演示,
弹出编辑页面,保存成功,页面验证ok,备份“cmdb09-03.rar”。

 

标签:jquery,jQuery,errors,form,10,--,ajax,user,result
From: https://www.cnblogs.com/sunnyyangwang/p/16653870.html

相关文章

  • SQLServer重建索引
    Use[数据库名称]GoDECLARE@DBCCStringNVARCHAR(1000)DECLARE@TableNameVARCHAR(100)DECLARECur_IndexCURSORFORSELECTNameASTblNameFROMsysobjectsWHE......
  • Linux下查看系统中占用内存和CPU最多的进程
    Linux下查看系统中占用内存和CPU最多的进程前一段时间参加面试,被问到一个场景题:就比如说我们发现一台Linux的服务器,它的一些系统资源,比如说CPU内存都涨得比较厉害的。......
  • 8.26~9.3小记
    记录一下这几天场切的一些我觉得比较难的题,以及一些练习题。题目名算法感悟P5050【模板】多项式多点求值多项式取模,分治FFT现在才学多少有点逊P5606小K......
  • 手把手教你安装 官方 Office 2019 家庭和学生版_利用官方渠道重新安装刚购买电脑时的
     此方法仅针对通过正式渠道购买的正版电脑(笔记本、台式机),组装机不可以。目前正版电脑均会预装永久激活的windows10系统以及office2019家庭和学生版套件,版权费用默认添加......
  • 小迪安全D4笔记:基础入门-web源码拓展
    title:小迪安全D4笔记:基础入门-web源码拓展author:TTdate:2022-09-02一、web源码目录结构后台目录模板目录数据库目录数据库配置文件二、web源码脚本类型ASP......
  • 算法总结
    1.展平二叉搜索树给你一棵二叉搜索树,请 按中序遍历将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。题......
  • win10关闭自动更新
    1.先运行services.msc进去之后找到下面这个WindowsUpdate服务,双击然后点击常规,启动类型改为禁用:然后点击恢复,将下面这几项改为无操作:2.再运行gpedit.msc在windo......
  • linq小结
    普通查询varquery=fromsincontext.Studentselects;//投影列varquery=fromsincontext.Studentselectnew{s.Id,s.StudentName};//起别名varquer......
  • COCO 目标检测 mAP AR等指标的计算
    ARAveragePrecision(AP)usedforObjectDetectionmAP=meanAP(perclass)https://kharshit.github.io/blog/2019/09/20/evaluation-metrics-for-object-detecti......
  • docker修改容器的映射端口
    需要更改宿主机的端口或者要添加映射端口新建容器把原来的容器删掉,重新建一个。dockerrun-id--namerabbitmq\-p5672:5672\-p15672:15672\-p1......