SerializeArray() 给出空数组

2024-05-25

我正在尝试使用.seralizeArray()收获形式输入值。

输入字段由具有相应价格的项目列表组成;我想根据相应的密钥对保存每个值,但不断收到错误:... empty array with 0 length.

我尝试了几种选择器组合,但仍然得到[].

如何才能序列化成功?

下面是我的代码:

HTML

<fieldset id='itemInformation'>
    <h2>Items</h2>
    <div class="itemGroup">
        <input type="text" id="item1Name" value="Item 1" class="itemNames">
        <input type="number" step="0.01" id="item1Price" value="0.00">
    </div>
    <div class="itemGroup">
        <input type="text" id="item2Name" value="Item 2" class="itemNames">
        <input type="number" step="0.01" id="item2Price" value="0.00">
    </div>
    <div class="itemGroup">
        <input type="text" id="item3Name" value="Item 3" class="itemNames">
        <input type="number" step="0.01" id="item3Price" value="0.00">
    </div>

    <div class="changeNumber">
        <button class="increase">&#43;</button>
        <button class="decrease">&#8211;</button>
    </div>
    <div class="buttons">
        <button class="previousButton btn">Previous</button>
        <button class="nextButton btn">Next</button>
    </div>
</fieldset>

JS

$('#itemInformation .nextButton').bind('click', function (event) {
    event.preventDefault()

    console.log($('.itemGroup').serializeArray())
})

小心!

您需要添加一个name归因于all your <input>字段如:

<input type="text" id="item1Name" value="Item 1" class="itemNames" name="itemNames">

另外,使用<form> https://developer.mozilla.org/en/docs/Web/HTML/Element/form代替<fieldset> https://developer.mozilla.org/en/docs/Web/HTML/Element/fieldset除非您确实有明确的理由用于此目的。

语法为serializeArray();如下:$(selector).serializeArray();.

参考:w3学校 http://www.w3schools.com/jquery/ajax_serializearray.asp(阅读定义和用法).

使用相同的概念here https://stackoverflow.com/a/9589154/6381711旨在序列化相似项目的集合.

请注意: 使用<form>元素不是强制性的,只是建议您根据您的预期目的和上面在帖子中共享的信息轻松有效地进行序列化;我可能误解了你的意思,但最重要的是错过了name属性,它解释了你的空数组[]因为有nothing可以序列化。

请记住,根据您的项目要求,您可能必须使用<fieldset>当需要时。

您可以使用<fieldset>元素具有不同的ids 将您想要识别为一个单元的相关项目分组。因此,你可能会遇到这样的情况:

<form id="itemDetails">
    <fieldset id="itemInformation">
        <!-- itemInformation label and input fields -->
    </fieldset>
    <fieldset id="itemOrigin">
        <!-- itemOrigin label and input fields -->
    </fieldset>
    <fieldset id="itemDestination">
        <!-- itemDestination label and input fields -->
    </fieldset>
</form>

然后您可以使用$('#itemDetails').serializeArray();序列化您的整个表单或$('#FIELDSET_ID').serializeArray(); where 字段集_ID是对应的id您想要根据事件从表单中序列化选定的字段集,以实现您的预​​期目的。


添加下面的代码片段来说明如何有效地将项目与其相应的值配对;

$('#itemInformation .nextButton').bind('click', function (event) {
    event.preventDefault();
    console.table($('#itemInformation').serializeArray());
    console.log($('#itemInformation').serializeArray());
});
<form id="itemDetails">
<!-- grouping all fieldset under a form element with an assigned id where
they can all be hierarchically referenced for precision where needed -->
    <fieldset id="itemInformation">
        <h2>Items</h2>
        <div class="itemGroup">
            <input type="number" id="item1Name" placeholder="0.00" class="itemNames" name="item1Name">
        </div>
        <div class="itemGroup">
            <input type="number" id="item2Name" placeholder="0.00" class="itemNames" name="item2Name">
        </div>
        <div class="itemGroup">
            <input type="number" id="item3Name" placeholder="0.00" class="itemNames" name="item3Name">
        </div>

        <div class="changeNumber">
            <button class="increase">&#43;</button>
            <button class="decrease">&#8211;</button>
        </div>
        <div class="buttons">
            <button class="previousButton btn">Previous</button>
            <button class="nextButton btn">Next</button>
        </div>
    </fieldset>
    <!-- other fieldset as necessary and harvest their input separately in
    a similar fashion as done with the first one itemInformation -->
    <fieldset id="itemOrigin">
        <!-- itemOrigin label and input fields -->
    </fieldset>
    <fieldset id="itemDestination">
        <!-- itemDestination label and input fields -->
    </fieldset>
</form>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

下面是浏览器开发者控制台中上述内容的示例输出(此处:Google Chrome 浏览器);

也提供here https://jsfiddle.net/nyedidikeke/q2ggwszg/(JS小提琴).

你会意识到,每一个<div class="itemGroup">有一个<input>元素有no value属性但是一个placeholder来说明预期的输入格式。您可以使用value相反,如果您想预先定义一个固定值,以便在没有输入值的情况下与相应的项目配对。这name属性是必需的:不要省略它。

因此(如上所述),当您序列化时,从输入字段收集的值将与相应的输入值和/或默认值配对。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SerializeArray() 给出空数组 的相关文章

随机推荐

  • Playframework 2.0 在视图模板中定义函数

    我正在开发一个使用 PlayFramework 2 0 的项目 在阅读了一些 scala 之后 我想在视图模板中嵌入一些动态代码 所以 我做了以下事情 def getMystring sequence Int if patternForm
  • 设置 8 1/2" x 12" itext 页面尺寸 [重复]

    这个问题在这里已经有答案了 我正在使用 itext PDF 我需要将 PDF 文档大小设置为德国标准 Fanfold 8 1 2 x 12 我不知道如何在 Itext 文档中设置英寸 Now I can set paper size as
  • UTF-8 解码如何知道字节边界?

    我一直在阅读大量有关 unicode 编码的文章 尤其是有关 Python 的文章 我想我现在对此已经有了相当深入的了解 但仍有一个小细节我有点不确定 解码如何知道字节边界 例如 假设我有一个带有两个 unicode 字符的 unicode
  • 如何使用ivy本地仓库作为maven仓库

    ivy 本地存储库位于 ivy2 中 我想将其用作本地 Maven 存储库 有没有像设置这样简单的方法来做到这一点 我怀疑你想要做的是共享 ivy 的缓存 而不是本地存储库 通过调用将文件放置在ivy的存储库中发布任务 http ant a
  • 导航栏的横向视图问题

    默认导航栏高度为 64 但更改后 其横向导航栏高度的方向更改为 28 我想设置修复所有方向的导航栏大小 您可以添加方向观察者 NotificationCenter default addObserver self selector sele
  • 谷歌如何知道你正在伪装?

    我似乎找不到任何有关谷歌如何确定您是否是的信息你的内容 从技术角度来看 您认为他们是如何确定这一点的 他们是否发送了 googlebot 之外的其他内容并将其与 googlebot 结果进行比较 他们有人类团队进行比较吗 或者他们可以以某种
  • Solaris 10 有 wget 命令吗

    Solaris 11 有 wget 命令 就像 Linux 一样 Solaris 10 是否有 wget 或类似 wget 的命令 Solaris 10 中的 wget 命令在某种程度上是隐藏的 你可以在这里找到它 usr sfw bin
  • 将指针设置为任意维度数组?

    当我想初始化多维数组时 我通常只使用指针 例如 对于二维我使用 double array 对于三个我使用 double array 但是 我想根据指示维度的命令行参数设置一个多维数组 一旦你有了一个具有你想要的维数的变量 有没有办法设置任意
  • 如何构建具有 64 位 COM 互操作的 64 位 .NET DLL?

    我需要构建一个针对 x64 的托管 DLL 并通过 x64 COM 公开它 我需要一个演练 好文章等等 互操作相当简单 但是当你谈论双方的x64时 我找不到任何东西 看一眼这次讨论 http bytes com forum thread58
  • 快速在视图之间传递数据

    我试图熟悉 Swift 但找不到如何使用 Swift 在视图之间传递数据 class ViewController UIViewController IBOutlet var field UITextField IBOutlet var b
  • 在 Swift 中上传带有其他参数的多张图片

    现在 我通过下面给出的代码仅将一张图像上传到服务器端脚本上的服务器 现在我有一个数组UIImage 我想知道如何使用UIImageJPEGRepresentation myImageView image 0 1 将所有图像发布到UIImag
  • 将双精度转换为二进制表示形式?

    我尝试将双精度数转换为其二进制表示形式 但使用此Long toBinaryString Double doubleToRawLongBits d 没有帮助 因为我有大量数字 Long 无法存储它们 即2 900 Long toBinaryS
  • JasperReports:传入列表列表作为数据源

    我需要用不同对象的列表填充一些子报表 基本上可以说我有以下内容 二手车子报告新车子报告 我创建一个车辆 bean 类 其中变量作为字符串 并为其创建 getter 和 setter 方法 然后在我的数据源中我传入一个List
  • 如何使用远程 URL 在 Android 模拟器中播放 mp4 视频?

    如何使用远程 URL 在 Android 模拟器中播放 mp4 视频 我使用了以下代码 但此代码给我错误 抱歉 该视频无法播放 07 05 16 58 19 525 INFO AwesomePlayer 34 mConnectingData
  • 匿名类*总是*维护对其封闭实例的引用吗?

    我正在处理一些代码 其中一个对象 foo 正在创建另一个对象 对象 bar 并将其传递给Callable 之后 foo 将返回 bar 然后我希望 foo 变得无法访问 即 可用于 垃圾收集 我最初的想法是创建Callable匿名 例如 c
  • 为什么我的 Google AppEngine 实例崩溃并显示“错误代码 121”?

    我已经在 Google AppEngine 上运行 java 高复制 Web 应用程序有一段时间了 大约两天前 基本上突然出现 很多请求开始失败HTTP 状态 500 and 错误代码 121 意味着相应的 GAE 实例崩溃或关闭 这是一个
  • Asp.NET MVC 应用程序中的静态类

    我想知道是否静态类 in an ASP NET MVC应用程序可能是多次初始化 我最初设计了我的应用程序 以便静态组件可以从数据库中获取一些内容并用作缓存 并且我向从构造函数调用的类添加了刷新方法 刷新方法也可通过应用程序的管理部分使用 在
  • Swift AVCaptureSession 关闭打开按钮错误:当前不支持多个音频/视频 AVCaptureInputs

    我有一个可用的条形码扫描仪代码 当我点击openCamera按钮 第一次一切都很好 当我点击closeCamera按钮 很好 但是如果我再次点击openCamera按钮给出致命错误 代码和错误如下 事实上 是否可以一键切换相机视图 Barc
  • simplexml_load_file 在 Solr 的 url 中带有 &(与号)

    我正在使用 Solr 并有以下查询 该查询在我的浏览器中运行良好 http www someipaddress com 8983 solr select q fq shopid 40 start 0 rows 18 fq manufactu
  • SerializeArray() 给出空数组

    我正在尝试使用 seralizeArray 收获形式输入值 输入字段由具有相应价格的项目列表组成 我想根据相应的密钥对保存每个值 但不断收到错误 empty array with 0 length 我尝试了几种选择器组合 但仍然得到 如何才