JavaScript表单序列化不起作用

时间:2015-10-27 12:25:14

标签: javascript jquery forms serialization javascriptserializer

我通过使用完美运行的onload事件来编辑HTML表单标记,

$(function (){
window.onload=function(){
var x = document.getElementsByTagName("form");
for (i = 0; i < x.length; i++) {
  if(x[i].getAttribute("data-reactid") == ".0"){
    x[i].id = "form1";
  }
}
}
});

但是当我尝试序列化onbeforeunload表单时,它为null,我做错了什么?我使用的是Chrome,我相信它不能在其他浏览器上运行。

 $(function (){
  window.onbeforeunload = function (e) {
    var $k = $('#form1').serialize();
    $.ajax({
      type: "POST",
      url: "MYURL",
      data: { t: Date.now(), u: document.URL, k: $k}
    });
  };
});

HTML

<form class role="form" data-reactid=".0">
<input type="text" placeholder="Name" data-reactid=".0.1.0.1">
<input type="text" placeholder="Last Name" data-reactid=".0.1.0.1">
<button type="submit" data-reactid=".0.3">Submit</button></form>

谢谢! - 数字

1 个答案:

答案 0 :(得分:1)

第一个问题是$('#form1')与表单不匹配,因为它没有ID。 (可能通过在第一个代码块中为其分配ID的代码来缓解)。

第二个问题是,即使它确实如此,输入元素也没有名称,因此它们不能成功控制(并且不会包含在序列化数据中)。

第三个问题是离开页面的行为(触发onbeforeunload)将取消Ajax请求。