6

我正在使用 Jquery 和主干来构建我的应用程序。最近我用require.js重写了AMD架构中的项目。然后开始发布表单的问题。这是我的表格:

*<div data-role="page" id="login" data-theme="a">
    <form class="loginPageForm">
        <div data-role="content" style="padding: 15px">
            <h3 id="login_heading">
                Login
            </h3>
            <div data-role="fieldcontain">
                <fieldset data-role="controlgroup" id="email_fieldset">
                    <label for="email_textinput" >
                        Email
                    </label>
                    <input id="email_textinput" placeholder="john@doe.com" value="" type="text" />
                </fieldset>
            </div>
            <div data-role="fieldcontain">
                <fieldset data-role="controlgroup" id="password_fieldset">
                    <label for="password_textinput">
                        Password
                    </label>
                    <input id="password_textinput" placeholder="Secret Password" value="" type="password" />
                </fieldset>
            </div>
            <input type="submit" class="btn" value="Login"/>
            <a data-role="button" data-transition="none" data-theme="f" href="#register" id="registerButton">Register</a>
        </div>
    </form>
</div>*  

我正在使用:

  **$.fn.serializeObject = function(){
            var arrayData, objectData;
            arrayData = $(this).serializeArray();
            objectData = {};
            $.each(arrayData, function() {
                var value;

                if (this.value != null) {
                    value = this.value;
                } else {
                    value = '';
                }

                if (objectData[this.name] != null) {
                    if (!objectData[this.name].push) {
                        objectData[this.name] = [objectData[this.name]];
                    }

                    objectData[this.name].push(value);
                } else {
                    objectData[this.name] = value;
                }
            });

            return objectData;
        }**

用于创建 Json.. 问题是 $(this).serializeArray(); 它返回一个空数组: $(this).serializeArray(): Array[0] length: 0 proto : Array[0]

我的对象“this”看起来像:

arrayData: Array[0]
objectData: undefined
this: v.fn.v.init[1]
0: form.loginPageForm
0: fieldset#email_fieldset
1: input#email_textinput
2: fieldset#password_fieldset
3: input#password_textinput
4: input.btn

你知道我应该如何避免这个问题,这种形式在我使用 AMD 架构之前就可以工作了吗?

4

1 回答 1

16

您的表单元素没有名称属性。当您提交表单时,元素的值将以其名称作为键发布到服务器。所以名字很重要。

根据jQuery serializeArray Docs

.serializeArray() 方法使用成功控制的标准 W3C 规则来确定它应该包含哪些元素;特别是该元素不能被禁用,并且必须包含名称属性。由于未使用按钮提交表单,因此没有序列化提交按钮值。来自文件选择元素的数据未序列化。

于 2013-02-15T03:17:28.187 回答