• 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>
  • 相关阅读:
    Linux LAMP架构搭建
    Linux 系统版本查询
    Linux 安装本地 yum源
    Linux 虚拟机安装vmware tools
    随记分页码
    flexigrid 修改json格式
    Asp.Net MVC及Web API框架配置会碰到的几个问题及解决方案
    web api 文档声明
    android UI
    Sending HTML Form Data
  • 原文地址:https://www.cnblogs.com/hiit/p/15049348.html
Copyright © 2020-2023  润新知