jQuery .serializeArray()返回空数组
我正在使用Jquery和backbone来构建我的应用程序。最近我使用require.js重写了AMD架构中的项目。然后通过发布表单来解决问题。这是我的表格:jQuery .serializeArray()返回空数组
*<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="[email protected]" 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 ..问题是线$(本).serializeArray();它返回一个空数组: $(本).serializeArray():数组[0] 长度:0 原:数组[0]
我的对象 “这个” 看起来像:
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架构之前工作?
您的表单元素没有名称属性。提交表单时,元素的值将以其名称作为关键字发布到服务器。所以这个名字很重要。
的.serializeArray()方法使用成功控制,以确定哪些元素应当包括标准的W3C规则;特别是该元素不能被禁用,并且必须包含一个名称属性。由于未使用按钮提交表单,所以没有提交按钮值被序列化。来自文件选择元素的数据不会被序列化。
嗨SybariteManoj感谢您的回答这个作品.... – stef 2013-02-15 08:43:11
欢迎你! :) – 2013-02-15 08:58:40
Jeez,不能相信这是它:p感谢速成班! – 2016-11-07 12:17:25
确实,这可能是因为你没有给你的领域命名。只有名称的字段将被处理。 – MatRt 2013-02-15 03:06:40