【问题标题】:Jquery not serializing my radio buttonsJquery没有序列化我的单选按钮
【发布时间】:2020-07-09 14:35:34
【问题描述】:

我无法使用 jquery serialize() 获得单选按钮和复选框的结果

有什么问题?

我放代码看看你能不能帮我,因为所有其他元素都正确处理它们。

$("body").on("submit", "form", function(event) {
  event.stopPropagation();
  event.preventDefault();
  var type = "POST";
  var url = $(this, "form").prop("action");

  if (event.target.files) {
    var file = event.target.files;
    var elementos = $(this, "form")[0].elements;

    var data = new FormData();

    for (var i = 0; i < elementos.length; i++) {
      element = elementos[i];
      data.append(element.name, element.value);
    }

    var file_data = $(file).prop("files")[0];
    data.append("files", file_data);

    var cache = false;
    var contentType = false;
    var processData = false;
  } else {
    var data = $(this, "form").serialize();
  }

  $.ajax({
      url: url,
      data: data,
      type: type,
      cache: cache,
      contentType: contentType,
      processData: processData

    })
    .done(function(data) {
      $(".section").html(data);
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="radio" name="genero" value="1"> Hombre
<input type="radio" name="genero" value="2"> Mujer

【问题讨论】:

  • 您的 html 中的“
    ”在哪里?

标签: jquery radio-button


【解决方案1】:

问题在于您使用的选择器。 $(this, "form") 正在另一个 form 元素中寻找当前的 form。只需在所有地方使用$(this)。另请注意,您可以通过为FormData() 构造函数提供form 元素引用来简化代码。这将与您当前的代码具有完全相同的结果。试试这个:

$("body").on("submit", "form", function(event) {
  event.stopPropagation();
  event.preventDefault();

  var type = "POST";
  var url = $(this).prop("action");
  var cache = false;
  var contentType = true;
  var processData = true;

  if (this.files.length) {
    var data = new FormData(this);
    contentType = false;
    processData = false;
  } else {
    var data = $(this).serialize();
  }

  $.ajax({
      url: url,
      data: data,
      type: type,
      cache: cache,
      contentType: contentType,
      processData: processData
    }).done(function(data) {
      $(".section").html(data);
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="radio" name="genero" value="1"> Hombre
<input type="radio" name="genero" value="2"> Mujer

【讨论】:

  • 如果谢谢,:-) 但输入 type = "radio" 仍然不起作用,它总是返回结果 2
  • 没有更新缓存,它不起作用,它给我的错误是 Chrome 控制台 --> Uncaught TypeError: (o.contentType || "").indexOf is not a functionUncaught TypeError: Cannot read property 'length' of undefined
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-25
  • 2012-11-27
  • 2012-01-08
  • 1970-01-01
  • 2013-08-26
  • 2013-06-21
相关资源
最近更新 更多