Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Ajax发布表单元素_Php_Jquery_Ajax - Fatal编程技术网

Php Ajax发布表单元素

Php Ajax发布表单元素,php,jquery,ajax,Php,Jquery,Ajax,我需要你的帮助 我试图用ajax“发布”表单元素。当我按名称获取所有元素时,我会在浏览器的控制台上看到结果,并将数据发送到数据库。但问题是。它发送的复选框值错误。它总是发送“on”值,即使我没有选中。顺便说一句,选择的零件工作正常 这是我的表格 定制您的体验 对友谊感兴趣的人 对实践感兴趣的人 话题 科学类 爱 压抑的 任何东西 语言 这是我的Javascript代码 $('form.ajax')。在('submit',function()上{ var that=$(此), url=th

我需要你的帮助

我试图用ajax“发布”表单元素。当我按名称获取所有元素时,我会在浏览器的控制台上看到结果,并将数据发送到数据库。但问题是。它发送的复选框值错误。它总是发送“on”值,即使我没有选中。顺便说一句,选择的零件工作正常

这是我的表格



定制您的体验 对友谊感兴趣的人
对实践感兴趣的人

话题 科学类 爱 压抑的 任何东西

语言
这是我的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很乐意帮忙