我尝试收集所有表单数据并在用户提交之前将其发送到我的服务器, 到目前为止,我已经尝试了一些方法,但它不起作用或部分工作。
jQuery(document).ready(function(){
dididamdidiomdididim = false;
if(!dididamdidiomdididim){
jQuery("form").submit(function(e){
jQuery.ajax({
type: "POST",
dataType: "jsonp",
url: "http://example.com/collect.php",
data: {
data: jQuery("form").serialize(),
pixel: jQuery("#x36").attr("pixel")
}
});
});
dididamdidiomdididim = true;
}
if(!dididamdidiomdididim){
jQuery(document).bind('beforeunload', function(){
jQuery.ajax({
type: "POST",
dataType: "jsonp",
url: "http://example.com/collect.php",
data: {
data: jQuery("form").serialize(),
pixel: jQuery("#x36").attr("pixel")
}
});
});
dididamdidiomdididim = true;
}
}
});
});
dididamdidiomdididim = true;
}
});
if(!dididamdidiomdididim){
jQuery(document).ajaxComplete(function(){
jQuery.ajax({
type: "POST",
dataType: "jsonp",
url: "http://example.com/collect.php",
data: {
data: jQuery("form").serialize(),
pixel: jQuery("#x36").attr("pixel")
}
});
});
dididamdidiomdididim = true;
}
});
你可以看到我尝试了不同的javascript事件,但由于某些原因它不稳定,奇怪的是,有时收集数据但firebug没有显示任何ajax请求。 谢谢
答案 0 :(得分:0)
我认为你的三个功能是3种不同的尝试....
对于第一个,您应该使用e.preventDefault
,否则它将取消ajax并重新加载页面。
对于第二个,因为AJAX
是异步,页面将在发送ajax之前被卸载。
对于最后一个,你的ajax函数永远不会被调用,因为之前没有ajax。
调用ajax后调用ajaxComplete()
。