zoukankan      html  css  js  c++  java
  • jQuery ajax

    serializeArray()在ajax表单提交时候非常方便获取元素

    定义和用法

    serializeArray() 方法通过序列化表单值来创建对象数组(名称和值)。

    您可以选择一个或多个表单元素(比如 input 及/或 textarea),或者 form 元素本身。

    语法

    $(selector).serializeArray()

    返回的 JSON 对象是由一个对象数组组成的,其中每个对象包含一个或两个名值对 —— name 参数和 value 参数(如果 value 不为空的话)。举例来说:

    [ 
      {name: 'firstname', value: 'Hello'}, 
      {name: 'lastname', value: 'World'},
      {name: 'alias'}, // 值为空
    ]

    在from表单外的值也可以通过push添加name,value

    var formdata = $("#viewpoint").serializeArray();
    var content = {};
    var html = $("#detail_desc").val();
    content['name'] = 'content';
    content['value'] = html;
    formdata.push(content);

    .serializeArray() 方法使用了 W3C 关于 successful controls(有效控件) 的标准来检测哪些元素应当包括在内。特别说明,元素不能被禁用(禁用的元素不会被包括在内),并且元素应当有含有 name 属性。提交按钮的值也不会被序列化。文件选择元素的数据也不会被序列化。

    该方法可以对已选择单独表单元素的对象进行操作,比如 <input>, <textarea>, 和 <select>。不过,更方便的方法是,直接选择 <form> 标签自身来进行序列化操作。

    实例thinkphp6的前端

      1 <link rel="stylesheet" href="{$static}/css/managenment.css?version={$version}">
      2 
      3 <link rel="stylesheet" type="text/css" href="{$static}/css/private.css?version={$version}">
      4 <!-- 导航 -->
      5 <div class="managenment">
      6     {include file="manager/menu"}
      7     <div class='release-right'>
      8         <p class='release-right-title'>发布观点</p>
      9         <div class='release-right-edit'>
     10             <form id="viewpoint">
     11                 <table class='tables'>
     12                     <tr>
     13                         <td>标题</td>
     14                         <td><input type="text" placeholder='请输入标题,字数不能大于50字' name="name"></td>
     15                     </tr>
     16                     <tr>
     17                         <td>简介</td>
     18                         <td><textarea name="desc" placeholder="请输入简介,字数不能大于70字"></textarea></td>
     19                     </tr>
     20                     <tr>
     21                         <td>封面</td>
     22                         <td class='covers'>
     23                             <img class="file gradient" src="{$static}/images/shangchuan.jpg" onclick="startFile()"
     24                                  id="img">
     25                             <input type="file" id="selectFile" onchange="uploadFile(this)" style="display: none;">
     26                             <p>尺寸:480*360 jpg / png格式</p>
     27                         </td>
     28                     </tr>
     29                     <input type="hidden" id="showImageValue" name="image" value="">
     30                     <tr>
     31                         <td><span class='eqs'>来源方式</span></td>
     32                         <td>
     33                             <div class="radio ralai">
     34                                 <input type="radio" id='ids' name="source" class='inputss' value="0" checked="checked">
     35                                 <label class='inputLable active' for='ids'>自创</label>
     36                             </div>
     37                             <div class="radio ralai">
     38                                 <input type="radio" id='securities' name="source" class='inputss' value="1">
     39                                 <label class='inputLable' for='securities'>其它</label>
     40                             </div>
     41                         </td>
     42                     </tr>
     43                     <tr>
     44                         <td>来源名称</td>
     45                         <td><input type="text" placeholder='请输入来源名称,字数不能大于50字' name="source_title"></td>
     46                     </tr>
     47                     <tr>
     48                         <td>评论权限</td>
     49                         <td>
     50                             <div class="radio" onclick="radioClick(this)">
     51                                 <input type="radio" name="comment_status" value="1" checked class="inputss">
     52                                 <label class="inputLable active">允许</label>
     53                             </div>
     54                             <div class="radio" onclick="radioClick(this)">
     55                                 <input type="radio" name="comment_status" value="0" class="inputss">
     56                                 <label class="inputLable">关闭</label>
     57                             </div>
     58                         </td>
     59                     </tr>
     60                     <tr>
     61                         <td>分类</td>
     62                         <td>
     63                             <select name="cate_id">
     64                                 <option value="">请选择分类</option>
     65                                 {foreach $type as $t}
     66                                 <option value="{$t.id}">{$t.title}</option>
     67                                 {/foreach}
     68                             </select>
     69                         </td>
     70                     </tr>
     71                     <tr>
     72                         <td style='vertical-align: top;'>标签</td>
     73                         <td class='lable-th'>
     74                             {foreach $tag as $tg}
     75                             <div class='checkeds'>
     76                                 <input type="checkbox" class='inputss' id='ids_{$tg.id}' value="{$tg.id}" name="tags[]">
     77                                 <label for="ids_{$tg.id}">{$tg.title}</label>
     78                             </div>
     79                             {/foreach}
     80                         </td>
     81                     </tr>
     82                 </table>
     83                 <div class='release-cont'>
     84                     <span>内容</span>
     85                     <textarea id="detail_desc" name="content" lay-verify="content"></textarea>
     86                 </div>
     87                 <div class='btnss'>
     88                     <div class='btns-lt' onclick="submitData(0)">发布</div>
     89                     <div class='btns-rt' onclick="submitData(-1)">保存到草稿箱</div>
     90                 </div>
     91             </form>
     92 
     93         </div>
     94     </div>
     95     <div class='clear'></div>
     96 </div>
     97 </body>
     98 <script src="{$static}/js/main.js?version={$version}"></script>
     99 <script>
    100     var editor;
    101     var html;
    102     KindEditor.ready(function (K) {
    103         editor = K.create('#detail_desc', {
    104             width : '700px',
    105             height:'401px',
    106         });
    107     });
    108     $(function () {
    109         $(".radio").click(function () {
    110             var num = $(".radio").index(this);
    111             $(this).children("label").addClass("active").parent(".radio").siblings().children('label').removeClass("active");
    112             $(".lables").eq(num).removeClass("clas").siblings().addClass('clas');
    113 
    114         });
    115         $(".lable-th label").click(function () {
    116             var index = $(this).index();
    117             if ($(this).hasClass('active')) {
    118                 $(this).removeClass('active');
    119                 $(this).children('img').remove();
    120             } else {
    121                 $(this).addClass('active').append("<img src='{$static}/images/biaoqian-icon.png'>");
    122             }
    123         })
    124     })
    125 
    126     function submitData(type) {
    127         editor.sync();
    128         var formdata = $("#viewpoint").serializeArray();
    129         if (type == 0){
    130             var backVal = checkdata(formdata);
    131             if (!backVal) {
    132                 return false;
    133             }
    134         }
    135         var content = {};
    136         var submit_type = {};
    137         var html = $("#detail_desc").val();
    138         submit_type['name'] = 'submit_type';
    139         submit_type['value'] = type;
    140         content['name'] = 'content';
    141         content['value'] = html;
    142         formdata.push(content);
    143         formdata.push(submit_type);
    144         $.post("/viewpoint/create", formdata, function (result) {
    145             if (result.code == 200) {
    146                 if (type == -1){
    147                     showTips("保存成功");
    148                 }else{
    149                     showTips("发布成功");
    150                 }
    151                setTimeout(function (){location.reload();},100)
    152             } else {
    153                 showTips(result.msg);
    154             }
    155         });
    156     }
    157 
    158     function startFile() {
    159         $("#selectFile").click();
    160     }
    161 
    162     function uploadFile(file) {
    163         var formData = new FormData();
    164         formData.append("file", file.files[0]);
    165         console.log(formData);
    166         $.ajax({
    167             url: '/upload/image',
    168             dataType: 'json',
    169             type: 'POST',
    170             data: formData,
    171             processData: false, // 使数据不做处理
    172             contentType: false, // 不要设置Content-Type请求头
    173             success: function (result) {
    174                 if (result.code == 200) {
    175                     $("#img").attr("src", result.data.src);
    176                     $("#showImageValue").val(result.data.src);
    177                 } else {
    178                     showTips(result.msg);
    179                 }
    180             },
    181             error: function (response) {
    182                 showTips(response.message);
    183                 isUpload = false;
    184             },
    185         });
    186     }
    187 
    188     function checkdata(data) {
    189         var values = [];
    190         for (var property in data) {
    191             values[data[property]['name']] = data[property]['value'];
    192         }
    193         if (values['name'] == '') {
    194             showTips("请填写观点标题")
    195             return false;
    196         }
    197         if (!values['desc']) {
    198             showTips('请填写观点简介');
    199             return false;
    200         }
    201         if (values['cate_id'] == '') {
    202             showTips('请选择观点分类');
    203             return false;
    204         }
    205         if (values['tags[]'] == '') {
    206             showTips('请选择观点标签');
    207             return false;
    208         }
    209         if (values['content'] == '') {
    210             showTips('请填写观点内容');
    211             return false;
    212         }
    213         return true;
    214     }
    215 </script>
    216 </html>
  • 相关阅读:
    三个心态做人做学问 沧海
    成功走职场要找准自己的"快捷键" 沧海
    免费离线下载 拂晓风起
    Hibernate 获取某个表全部记录时 奇怪现象 (重复出现某个记录) 拂晓风起
    无法读取mdb 如果连接不了ACCESS mdb文件,就尝试安装MDAC 拂晓风起
    Netbeans 使用 Hibernate 逆向工程 生成hbm和pojo 拂晓风起
    如何点击单选框 radio 后面的文字,选中单选框 拂晓风起
    Java 连接access 使用access文件 不用配置 拂晓风起
    mysql下如何执行sql脚本 拂晓风起
    Hibernate配置access Hibernate 连接 access 拂晓风起
  • 原文地址:https://www.cnblogs.com/hiit/p/15049348.html
Copyright © 2011-2022 走看看