Php Magento中是否有一个神奇的方法,当用户离开页面时会自动调用?

Php Magento中是否有一个神奇的方法,当用户离开页面时会自动调用?,php,magento,Php,Magento,我有定制购物车和结帐流程,所以根本不使用销售报价。与Magento默认购物车表单一样,有3个提交按钮:更新购物车、继续购物和结账。虽然“继续购物”按钮很简单,但我对“更新购物车”和“结账”按钮有问题 如果用户单击更新购物车,则没有问题,因为我可以将所有表单值捕获到会话中。问题是当用户直接点击Checkout按钮时。这是因为一个表单不能有两个提交按钮。因此,我只是将Checkout按钮重定向到一个控制器 所以,如果用户直接单击Checkout按钮,我将无法捕获一些表单值(如用户注释、自定义PO等)

我有定制购物车和结帐流程,所以根本不使用销售报价。与Magento默认购物车表单一样,有3个提交按钮:更新购物车、继续购物和结账。虽然“继续购物”按钮很简单,但我对“更新购物车”和“结账”按钮有问题

如果用户单击更新购物车,则没有问题,因为我可以将所有表单值捕获到会话中。问题是当用户直接点击Checkout按钮时。这是因为一个表单不能有两个提交按钮。因此,我只是将Checkout按钮重定向到一个控制器

所以,如果用户直接单击Checkout按钮,我将无法捕获一些表单值(如用户注释、自定义PO等)。有没有一种神奇的方法,当有人离开Magento页面时会自动执行(类似于u construct())?如果是,我想使用这个神奇的方法来捕获表单值。

在JQuery中(我看到您在注释中要求提供解决方案),您可以绑定以下内容:

$(window).bind('beforeunload', ...
我这里有一些代码,我不记得是从哪里来的:
使用jQuery的解决方案如下所示:

$(window).bind('beforeunload',function() {
   var var1 = $("#element1").val();//maybe .text() depends on the element type and so on..
   $.post('setSession.php',{var1:var1, var2:var2, var3:var3});
});
当然,如果愿意,您可以使用
$.get()
。您还可以使用
$.ajax()
,这只是基本结构


祝你好运

嗯,我对magento不太熟悉,但是使用JS和AJAX呢?您可以在用户离开页面时捕获事件(onbeforeunload事件),然后运行脚本,使用AJAX将所需数据设置到会话中。谢谢。我试试看。我可以使用jQuery吗?我建议对AJAX请求使用jQuery,它确实简化了它。您还可以通过使用函数
bind
将其用于onbeforeunload事件,它看起来类似于:
$(window.bind('beforeunload',function(){//ajax request})