Php Ajax发布表单元素
我需要你的帮助 我试图用ajax“发布”表单元素。当我按名称获取所有元素时,我会在浏览器的控制台上看到结果,并将数据发送到数据库。但问题是。它发送的复选框值错误。它总是发送“on”值,即使我没有选中。顺便说一句,选择的零件工作正常 这是我的表格Php Ajax发布表单元素,php,jquery,ajax,Php,Jquery,Ajax,我需要你的帮助 我试图用ajax“发布”表单元素。当我按名称获取所有元素时,我会在浏览器的控制台上看到结果,并将数据发送到数据库。但问题是。它发送的复选框值错误。它总是发送“on”值,即使我没有选中。顺便说一句,选择的零件工作正常 这是我的表格 定制您的体验 对友谊感兴趣的人 对实践感兴趣的人 话题 科学类 爱 压抑的 任何东西 语言 这是我的Javascript代码 $('form.ajax')。在('submit',function()上{ var that=$(此), url=th
定制您的体验
对友谊感兴趣的人
对实践感兴趣的人
话题
科学类
爱
压抑的
任何东西
语言
这是我的Javascript代码
$('form.ajax')。在('submit',function()上{
var that=$(此),
url=that.attr('action'),
type=that.attr('method'),
数据={};
that.find('[name]')。每个(函数(索引,值){
var that=$(此),
name=that.attr('name'),
value=that.val();
数据[名称]=值;
});
$.ajax({
url:url,
类型:类型,
数据:数据,
成功:功能(响应){
控制台日志(响应);
}
});
返回false;
});
这是jQuery中的默认行为。您需要做的是显式处理复选框值,以确定其是否已选中。按如下所示更改ajax方法。我们将修改循环,使其选中复选框值:
that.find('[name]').each(function(index, value){
var that = $(this),
name= that.attr('name'),
value = that.val();
if (that.attr('type') === 'checkbox') {
data[name] = that.is(':checked') // this will set the value to true or false
} else {
data[name] = value;
}
});
你应该使用
$('#checkboxelement').is(":checked")
读取复选框和单选元素的选中状态。问题在于您正在尝试实现自己版本的序列化方法,如果未选中复选框,则不包括复选框。您的逻辑包括字段,只要它们有一个名称字段 使用jQuery已经实现的
serialize()
$('form.ajax').on('submit', function (e) {
e.preventDefault();
var $this = $(this),
url = this.action,
type = this.method,
data = $this.serialize();
$.ajax({
url: url,
type: type,
data: data,
success: function(response) {
console.log(response);
}
});
});
这是复选框的默认行为。您只是读取复选框的值,而不是属性“checked”或“not”。可能只针对收音机和复选框进行另一个循环。$(that).serialize()
是一个内置方法,用于获取ajax请求的表单数据。您在尝试实现自己的版本时遇到问题。感谢您的帮助。它正在工作,但只在第二个复选框中工作。第一个是给的永远是真的。非常感谢。我在你的帮助下解决了我的问题。@FurkanAkgün很乐意帮忙