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. 09 什么是注意力机制(Attention )

    博客配套视频链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 链接:https:// ...

  2. SegmentFault 基于 Kubernetes 的容器化与持续交付实践

    本文是根据 KubeSphere 云原生 Meetup 杭州站讲师祁宁分享内容整理而成. SegmentFault 是一家综合性技术社区,由于它的内容跟编程技术紧密相关,因此访问量的波动也和这一群体的 ...

  3. Java中重写equals并重写hashcode方法的描述

    1.两个对象的hashCode()相同,equals()不一定为true (1)重写equals()的同时,重写hashCode() a.定义Person类,私有属性name,age:有参构造,set ...

  4. 最新Sql语句来啦

    创建数据库 CREATE DATABASE 数据库名称; 删除数据库 DROP DATABASE 数据库名称; 创建新表 create table 表名(列 类型 ,列 类型 ,..); 根据已有的表 ...

  5. c++时间管理大师

    作者花了一个下午写出来的. c++写的时间管理大师. 支持一下. #include<bits/stdc++.h> #include<windows.h> using names ...

  6. C++之OpenCV入门到提高002:加载、修改、保存图像

    一.介绍 今天是这个系列<C++之 Opencv 入门到提高>得第二篇文章.今天这个篇文章很简单,只是简单介绍如何使用 Opencv 加载图像.显示图像.修改图像和保存图像,先给大家一个最 ...

  7. C#/.NET/.NET Core优秀项目和框架2024年10月简报

    前言 公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的介绍.功能特点.使用方式以及部分功能截图 ...

  8. 21.Kubernetes配置默认存储类

    Kubernetes配置默认存储类 前言 今天在配置Kubesphere的时候,出现了下面的错误 经过排查,发现是这个原因 我通过下面命令,查看Kubernetes集群中的默认存储类 kubectl ...

  9. C语言指针一些常见的错误用法

    指针用的好犹如神助,用不好会让你叫苦连连,但大多数人是用不好指针的,所以后来的很多语言都把指针封装,屏蔽.比如JAVA,java是没有指针的,但是很多地方都用到指针,不过不对用户开放,语言的自身机制帮 ...

  10. Air780E量产binpkg文件如何获取

    ​ 今天我们学习Air780E量产binpkg文件如何获取: 一.背景 最近luatos开发客户增多,客户在量产烧录的时候需要binpkg文件,但是有些客户不知道binpkg文件是什么,在哪里获取,是 ...