zoukankan      html  css  js  c++  java
  • jQuery中的serializer序列化—炒鸡好用

    jQuery.serializer()序列化

    serialize()函数用于序列化一组表单元素,将表单内容编码为用于提交的字符串。

    • serialize()函数常用于将表单内容序列化,以便用于AJAX提交。

    该函数主要根据用于提交有效表单控件的name和value,将它们拼接为一个可直接用于表单提交的文本字符串,该字符串已经过标准的URL编码处理(字符集编码为UTF-8)。

    无效的表单控件不会被提交,包括:

    • 不在<form>标签内的表单控件不会被提交

    • 没有name属性的表单控件不会被提交

    • 带有disabled属性的表单控件不会被提交

    • 没有被选中的表单控件不会被提交

    语法

    jQueryObject.serialize()

    serialize()函数的返回值为String类型,返回将表单元素编码后的可用于表单提交的文本字符串。

    html初始代码

    <form name="myForm" action="http://www.365mini.com" method="post">
        <input name="uid" type="hidden" value="1" />
        <input name="username" type="text" value="张三" />
        <input name="password" type="text" value="123456" />
        <select name="grade" id="grade">
            <option value="1">一年级</option>
            <option value="2">二年级</option>
            <option value="3" selected="selected">三年级</option>
            <option value="4">四年级</option>
            <option value="5">五年级</option>
            <option value="6">六年级</option>
        </select>
        <input name="sex" type="radio" checked="checked" value="1" /><input name="sex" type="radio" value="0" /><input name="hobby" type="checkbox" checked="checked" value="1" />游泳
        <input name="hobby" type="checkbox" checked="checked" value="2" />跑步
        <input name="hobby" type="checkbox" value="3" />羽毛球
        <input name="btn" id="btn" type="button" value="点击" />
    </form>
    • 序列化form表单中的所有元素

    alert( $("form").serialize());
    // 序列化结果: uid=1&username=%E5%BC%A0%E4%B8%89&password=123456&grade=3&sex=1&hobby=1&hobby=2
    • 序列化部分表单元素

    alert( $(":text, select, :checkbox").serialize());
    // 序列化后的结果:username=%E5%BC%A0%E4%B8%89&password=123456&grade=3&hobby=1&hobby=2

    使用实例

    html文件

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width">
        <title>Title</title>
    </head>
    <body>
    <form name="myForm" action="http://www.365mini.com" method="post">
        <input name="uid" type="hidden" value="1" />
        <input name="username" type="text" value="张三" />
        <input name="password" type="text" value="123456" />
        <select name="grade" id="grade">
            <option value="1">一年级</option>
            <option value="2">二年级</option>
            <option value="3" selected="selected">三年级</option>
            <option value="4">四年级</option>
            <option value="5">五年级</option>
            <option value="6">六年级</option>
        </select>
        <input name="sex" type="radio" checked="checked" value="1" /><input name="sex" type="radio" value="0" /><input name="hobby" type="checkbox" checked="checked" value="1" />游泳
        <input name="hobby" type="checkbox" checked="checked" value="2" />跑步
        <input name="hobby" type="checkbox" value="3" />羽毛球
        <input name="btn" id="btn" type="button" value="点击" />
    </form>
    <script src="/static/jquery-3.2.1.min.js"></script>
    <script src="https://cdn.bootcss.com/jquery-cookie/1.4.1/jquery.cookie.js"></script>
    <script>
        $("#btn").click(function () {
    {#        方式一#}
            //$.ajaxSetup({
              // data:{csrfmiddlewaretoken:'{{ csrf_token }}'}
            //});
            $.ajax({
                url:"/serialize/",
                type:"POST",
    {#            方式三#}
                headers:{"X-CSRFToken":$.cookie('csrftoken')},
                //data:$("form").serialize(),   //序列form表单所有的
                data:$(":text,:password,:checkbox").serialize(),  //序列自己选择的
                success:function (data) {
                    var data=JSON.parse(data);  //js中的反序列化
                    console.log(data);
                    console.log(typeof data);
                    $(".error").html(data);
                }
            })
        })
    </script>
    </body>
    </html>
    serialize.html

    views.py

    def serialize(request):
        # form = request.POST
        # print(form)
        name = request.POST.get("username")
        password = request.POST.get("password")
        checked = request.POST.getlist("hobby")
        print(name,password,checked)
        return HttpResponse(json.dumps(name))

    当有好多input的时候,就得一一对应的吧所有的数据发过去的,这样显得麻烦,我们用序列化。

    // 前端
    data:$("form").serialize(),   //序列form表单所有的
    data:$(":text,:password,:checkbox").serialize(),  //序列自己选择的

    在服务端获取数据

    form = request.POST   
    print(form)   #获取所有
    name = request.POST.get("username")
    password = request.POST.get("password")
    checked = request.POST.getlist("hobby")
    print(name,password,checked)#获取单个
  • 相关阅读:
    css中的背景、渐变 文本格式化和表格的常用属性
    HTML5中常见的英文单词
    matlab文件处理
    优先级队列
    编程珠玑(一)
    排序算法之希尔排序
    自己写的矩阵类Matrix
    排序算法之快速排序
    Thoughtworks公司面试题——MARS ROVERS问题
    matlab画图
  • 原文地址:https://www.cnblogs.com/ryxiong-blog/p/11241247.html
Copyright © 2011-2022 走看看