预订过程中的电子邮件ID捕获

时间:2012-02-06 18:58:04

标签: php javascript jquery prototype

我有一个html页面,其中包含注册表单字段,如电子邮件地址等。注册过程中有fiew步骤。在第一步中,表单有一个电子邮件地址字段。

我想要的是,如果用户输入电子邮件地址并因某些原因离开表单,经过一段时间后,如15分钟之后,我想捕获该电子邮件地址并将其发送到服务器。因为他们中的一些人在中间离开了预订过程。即使他们没有完成预订流程,我也希望抓住他们。我只是想通过使用计时器或其他东西捕获该电子邮件地址。我使用了onblur()事件并编写了一些代码。但我需要一些帮助来解决这个问题。

提前致谢,

3 个答案:

答案 0 :(得分:1)

您想要一个返回电子邮件地址的ajax调用。这并不完美,但可以让您大致了解自己需要做什么。

// When the document is loaded do something.
$(document).ready(function(){
    // Do something after 5 minutes (300000 seconds)
    setTimeout('captureEmail',300000)
});

function captureEmail()
{
  // Serialize the form data and send to captureEmail.php
  $('#formId').ajax({
    url: "captureEmail.php",
    data: this.serialize(),
    success: function(){
      $(this).addClass("done");
    }
  });    
}

答案 1 :(得分:1)

有几十种方法可以做到这一点。

如果它们从向导的第一步到第二步,您可以将电子邮件地址捕获到服务器中的表。我会按照具有电子邮件地址和注册的唯一ID以及时间戳的表格执行某些操作,然后您可以使用一个服务来轮询表并将其与已完成的注册表进行比较,然后将这些电子邮件存储在某处。

另一个选项是一个javascript函数,在页面退出或浏览器卸载时触发一个插入表的更新方法。

或者您可以使用jquery / ajax,这样当他们离开电子邮件字段时,它会验证它是一种有效的电子邮件格式,如果这样,则触发更新方法或三者的某种组合。

首先,您需要确定要捕获电子邮件地址的位置,然后查看对您开放的机制。即从一步到下一步的帖子。或者在页面上触发事件时的ajax / jquery。

答案 2 :(得分:1)

我会使用“thenetimp”答案,但会改变这些事情

- setTimeout应该在电子邮件文本框中onkeydown启动 - 因为在进行ajax调用之前他会知道有些数据存在..

- 在发送数据之前,最好建议使用Regex检查电子邮件的有效性

每5分钟后调用ajax,无论数据是否存在,也不检查输入的数据是否是完整的电子邮件ID,这不仅会使服务器充满请求,但最终可能会存储像{{1}这样的垃圾值和其他东西.. !!

虽然,你可以在服务器本身获得id后检查id的有效性,但是它最好从客户端获取有效数据,而不是使用甚至可能无效的数据重载你的服务器..