我想知道是否有更好的方法从输入中获取数据然后发布它们。我在这里有这个代码工作正常,但我只想知道是否有更好的东西,我可以用它来简化它。
$('#Subscription').submit(function(e){
var url = $(this).attr('action'),
1 = $('input[name=1]').val(),
2 = $('input[name=2]').val(),
3 = $('input[name=3]').val(),
4 = $('input[name=4]').val(),
5 = $('input[name=5]').val(),
6 = $('input[name=6]').val(),
$.post(url, { 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6 }, function (data) {
// Do something after post
});
e.preventDefault();
});
答案 0 :(得分:2)
试试这个http://api.jquery.com/serialize/
示例:强> 的
$('#Subscription').submit(function(e){
var url = $(this).attr('action'),
var formData= $(this).serialize();
$.post(url, data:formData, function (data) {
// Do something after post
});
e.preventDefault();
});
答案 1 :(得分:0)
如果输入元素不在表单内,也可以尝试以下代码。
<div id="form_clone">
<input name="name" />
<input name="id" />
<input name="contact_details" />
<input name="info" />
</div>
'序列化'函数只允许获取表单中的输入字段,但如果要获取此元素中输入元素的值,请使用:
(function($) {
$.fn.serializeAnything = function() {
var toReturn = [];
var els = $(this).find(':input').get();
$.each(els, function() {
if (this.name && !this.disabled && (this.checked || /select|textarea/i.test(this.nodeName) || /text|hidden|password/i.test(this.type))) {
var val = $(this).val();
toReturn.push( encodeURIComponent(this.name) + "=" + encodeURIComponent( val ) );
}
});
return toReturn.join("&").replace(/%20/g, "+");
}
})(jQuery);
用法:
$('#form_clone').serializeAnything()