jQuery .serializeArray()返回空数组

ste*_*tef 5 jquery amd requirejs backbone.js

我正在使用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>*  
Run Code Online (Sandbox Code Playgroud)

我正在使用:

  **$.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;
        }**
Run Code Online (Sandbox Code Playgroud)

用于创建Json ..问题是行$(this).serializeArray(); 返回一个Empty数组:$(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
Run Code Online (Sandbox Code Playgroud)

你有什么想法我应该避免这个问题,这个形式在我玩AMD架构之前有效吗?

Man*_*nga 14

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

根据jQuery serializeArray Docs

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