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>

jQuery ajax - serializeArray() 方法 实例表单提交的更多相关文章

  1. jQuery ajax - serializeArray() 方法

    定义和用法 serializeArray() 方法通过序列化表单值来创建对象数组(名称和值). 您可以选择一个或多个表单元素(比如 input 及/或 textarea),或者 form 元素本身. ...

  2. 不使用Ajax,如何实现表单提交不刷新页面

    不使用Ajax,如何实现表单提交不刷新页面? 目前,我想到的是使用<iframe>,如果有其他的方式,后续再补. 举个栗子: 在表单上传文件的时候必须设置enctype="mul ...

  3. jqPaginator分页(ajax用法和form表单提交用法)

    一般使用方法 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UT ...

  4. Jquery添加元素append及阻止表单提交submit

    HTML代码: <td><input name="duration[]" value="" type="text" /&g ...

  5. jquery ajax 的data 存表单的值

    jsp <body> <form action="" method="post" id="formid">  < ...

  6. Jquery.serializeArray()可看表单提交内容

  7. ajax请求与form表单提交共存的时候status为canceled

    chrome浏览器调试,发现,status竟然是canceled状态 网上总论: 1.在URL变更后,会对当前正在执行的ajax进求进行中止操作.中止后该请求的状态码将为canceled 2.在使用到 ...

  8. 浏览器下载/导出文件 及jQuery表单提交

    1 比如以下按钮, 用于导出文件,如EXCEL文件. <li> <button class="whiteBg btn2" onclick="doExp( ...

  9. 使用jQuery,实现完美的表单异步提交

    jQuery异步提交表单 <form id="form1" method="post"> <table border="1" ...

  10. MVC下HtmlHelper自带BeginForm表单提交与异步Ajax请求

    假如有一个数据表格UserInfo: public class UserInfo { public int Id { get; set; } public string Name { get; set ...

随机推荐

  1. Spark任务OOM问题如何解决?

    大家好,我是 V 哥.在实际的业务场景中,Spark任务出现OOM(Out of Memory) 问题通常是由于任务处理的数据量过大.资源分配不合理或者代码存在性能瓶颈等原因造成的.针对不同的业务场景 ...

  2. 如何修改word默认模板(Normal.dotm)

    背景描述:平时有大量的文字编辑工作要做,其中最繁琐的就是格式问题:为了排版工整.符合要求,在每个word中都要进行大量的更改,如:字体.大小.行距.段前段后间距等......但这其中有很多的重复性工作 ...

  3. 5.29 杭州站云原生 Meetup,邀您观看线上同步直播

    5 月 15 日在上海组织的云原生 Meetup,除了现场火爆.人数爆满之外,同步进行的线上直播也同样受到了广大社区小伙伴的关注,在线观看直播人数足有千人之众. 为了能让更多的社区小伙伴能够参与到 M ...

  4. 利用 Kubernetes 内置 PodTemplate 管理 Jenkins 构建节点

    作者:Rick Jenkins 可以很好地与 Kubernetes 集成,不管是控制器(controller)还是构建节点(agent),都能以 Pod 的形式运行在 Kubernetes 上. 熟悉 ...

  5. TRLO: An Efficient LiDAR Odometry with 3D Dynamic Object Tracking and Removal

    arxiv | 中科院联合国科大开源 TRLO:一种结合3D动态物体跟踪与移除的高效LiDAR里程计 [TRLO: An Efficient LiDAR Odometry with 3D Dynami ...

  6. att&ck学习笔记2

    一.环境搭建 靶场下载地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/3/ DC IP:10.10.10.10OS:Windows 2012应用:A ...

  7. dorado在dialog中使用js通过控件id修改控件值,值闪烁一下消失问题

    在使用dorad过程中,在dialog中编写了复选下拉框,选择完值后,后台js获取选择的值对前台的autoFormElement赋值时element中的值闪烁一下消失,百度没有解决方法,多次尝试后使用 ...

  8. 2-6 C/C++ 编写头文件

    目录 头文件怎么起作用 避免头文件被重复引用 避免头文件被重复引用的方法:条件编译 1. 给每个头文件添加一个预编译变量(preprocessor variable)作为标记(Label) 2. 使用 ...

  9. 关于MNN工程框架编译出来的静态库和动态库的使用

    一.MNN.lib文件路径 如果你看过之前的博客内容,应该可以在编译的的工程当中 C:\Users\Administrator\Desktop\MNN\MNN-master\MNN-CPU-OPENC ...

  10. DDCA —— 缓存一致性

    1. 多处理器内存组织结构 1.1 SMP/集中式共享内存 集中式共享内存多处理器(Centralized shared-memory multiprocessor)或对称共享内存多处理器(Symme ...