我将jQuery.post的简单示例修改为
$("#searchForm").submit(function(event) {
event.preventDefault();
var $form = $( this ),
term = $( "input[name^=tick]:checked" ).serialize(),
url = $form.attr( 'action' );
$.post( url, { ticks: term, id: '55' },
function( data ) {
$( "#result" ).empty().append( data );
}
);
});
这适用于带有val()
的单一复选框,但不适用于
<input type="checkbox" name="tick" value="'.$value.'" />
因为serialize() should generate
标记:术语to be used as
术语in
$ .post`。
如何让serialize()
为$.post
注意:我不想序列化整个表单,只检查复选框INPUT的值。
答案 0 :(得分:4)
你可以使用.serializeArray() 参考:http://api.jquery.com/serializeArray/
答案 1 :(得分:4)
简单的价值收藏家:) HTML
<input type="checkbox" class="selector" value="{value}"/>
JS
var checked='';
$('.selector:checked').each(function(){
checked=checked+','+$(this).val();
});
PHP
$ids=explode(',',substr($_GET['param_with_checked_values'],1));
答案 2 :(得分:2)
在name="tick"
中的html代码更改name="tick[]"
中,您只需使用$(this).serialize();
发布所有已检查的值。
答案 3 :(得分:0)
term = $("#input[name^=tick]:checked").map(function () {
return this.value;
}).get();
term.join();
答案 4 :(得分:0)
您仍然可以使用LocationManager
并在.serializeArray
中使用它,如下所示:
.post()
var postData = {};
var form = $('#formId').serializeArray();
for (var i = 0; i < form.length; i++) {
if (form[i]['name'].endsWith('[]')) {
var name = form[i]['name'];
name = name.substring(0, name.length - 2);
if (!(name in postData)) {
postData[name] = [];
}
postData[name].push(form[i]['value']);
} else {
postData[form[i]['name']] = form[i]['value'];
}
}
$.post('/endpoint', postData, function(response) {
}, 'json');
将包含除已禁用的表单元素之外的所有表单元素。所有复选框值都将作为数组传递,就像进行正常表单提交一样。
答案 5 :(得分:0)
let $form = $(".js-my-form");
let $disabled = $form.find(':input:disabled').removeAttr('disabled');
let formData = {};
$.each($form.serializeArray(), function (index, fieldData) {
if (fieldData.name.endsWith('[]')) {
let name = fieldData.name.substring(0, fieldData.name.length - 2);
if (!(name in formData)) {
formData[name] = [];
}
formData[name].push(fieldData.value);
} else {
formData[fieldData.name] = fieldData.value;
}
});
$disabled.attr('disabled', 'disabled');
console.log(formData);
它是Stanimir Stoyanov的变体,可以序列化禁用的字段。