我通过使用完美运行的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>
谢谢! - 数字
答案 0 :(得分:1)
第一个问题是$('#form1')
与表单不匹配,因为它没有ID。 (可能通过在第一个代码块中为其分配ID的代码来缓解)。
第二个问题是,即使它确实如此,输入元素也没有名称,因此它们不能成功控制(并且不会包含在序列化数据中)。
第三个问题是离开页面的行为(触发onbeforeunload
)将取消Ajax请求。