ajax实现添加数据

前端部分

javascript 复制代码
function bindBtnAddEvent() {
     $("#btnAdd").click(function () {

          $(".error_msg").empty();

          $.ajax({
               url: '/task/add/',
               type: 'post',
               data: $('#formAdd').serialize(),
               dataType: "JSON",
               success: function (res) {
                    if (res.status) {
                            alert("添加成功");
                            location.reload();
                   } else {
                            console.log(res.error);
                            $.each(res.error, function (name, data) {
                                console.log(name);
                                $("#id_" + name).next().text(data[0]);
                           })
                       }
                    }
                })
          })
    }

点击后,发送ajax请求 。以post方式向/task/add/地址发送表单数据。

python 复制代码
@csrf_exempt
def task_add(request):
    #print(request.POST)
    #校验
    form=TaskModelForm(data=request.POST)
    if form.is_valid():
        form.save()
        data_dict={"status": True}
        return HttpResponse(json.dumps(data_dict))
    print(type(form.errors))
    data_dict={"status": False,'error':form.errors}
    return HttpResponse(json.dumps(data_dict))

TaskModelForm是自定义的类

后台接收到数据,以TaskModelForm类接收POST请求发送的数据。

如果数据有效,保存到数据库,并给前段返回HttpResponse(json.dumps(data_dict)),其中

data_dict={"status":True}

如果无效,data_dict={"status": False,'error':form.errors} 向前端发送 HttpResponse(json.dumps(data_dict))

javascript 复制代码
success: function (res) {
    if (res.status) {
        alert("添加成功");
        location.reload();
    } else {
        console.log(res.error);
        $.each(res.error, function (name, data) {
            console.log(name);
            $("#id_" + name).next().text(data[0]);
        })
    }
}

请求发送过后,获取响应。

如果res.status=True,添加成功 并且刷新页面

否则,

相关推荐
Irene19918 分钟前
ElementPlus 与成熟后台框架对比:vue-element-plus-admin、vue-pure-admin等
前端·ui·框架·vue3
尘中客4 小时前
放弃 Echarts?前端直接渲染后端高精度 SVG 矢量图流的踩坑记录
前端·javascript·echarts·前端开发·svg矢量图·echarts避坑
FreeBuf_4 小时前
Chrome 0Day漏洞遭野外利用
前端·chrome
小彭努力中5 小时前
199.Vue3 + OpenLayers 实现:点击 / 拖动地图播放音频
前端·vue.js·音视频·openlayers·animate
2501_916007475 小时前
网站爬虫原理,基于浏览器点击行为还原可接口请求
前端·javascript·爬虫·ios·小程序·uni-app·iphone
前端大波5 小时前
Sentry 每日错误巡检自动化:设计思路与上手实战
前端·自动化·sentry
ZC跨境爬虫6 小时前
使用Claude Code开发校园交友平台前端UI全记录(含架构、坑点、登录逻辑及算法)
前端·ui·架构
慧一居士6 小时前
Vue项目中,何时使用布局、子组件嵌套、插槽 对应的使用场景,和完整的使用示例
前端·vue.js
Можно6 小时前
uni.request 和 axios 的区别?前端请求库全面对比
前端·uni-app
M ? A7 小时前
解决 VuReact 中 ESLint 规则冲突的完整指南
前端·react.js·前端框架