在 AJAX 中发送用户的相应电子邮件

send respective email of user in ajax

本文关键字:电子邮件 用户 AJAX      更新时间:2023-09-26

我正在研究 ajax 我面临的问题是我有两个函数,第一个是通过 Ajax 从服务器获取用户的数据。 收到的数据包含电子邮件以及每个用户的所有其他数据。 每个用户的电子邮件都保存在一个变量中,假设我们有用户 A 并且他的电子邮件是 user@A.com 和另一个用户 B 具有电子邮件 user@b.com 并且用户 C 相同,因此,如此如果更多用户。下面是代码

$(response).find(".EMP_EMAIL>span").each(function(i, span) {
    employee_email = $(span).text();

记住employee_email是全局变量

现在,用于通过 Ajax 发送电子邮件的第二个函数和 URL 包含电子邮件作为参数。发送电子邮件函数通过按钮单击调用,每个用户记录都有自己的按钮。 如果我单击用户 A 下方的按钮,问题就在这里,因此应该 user@A.com url 中的参数,如果单击用户 B 记录下方的按钮,则参数应该 user@B.com,并且对于 C 也是如此,依此类推如果用户存在。下面是它的代码。但就我而言,它只会将电子邮件发送到保存在employee_email中的最后一封电子邮件。所以我无法为它制定逻辑,所以需要你的帮助。如果可能的话,请详细说明您的答案,以便我将来能够理解并可以自己处理这种情况。

function sendEmail(){
if(flag)
{
    request = $.ajax({
        url: "send_email.php?"+employee_email,
        type: "post",
        success: function(data){
            $("#email_responses").html();
        },
        error:function(){
            alert("failure");
            $("#email_responses").html('error occured');
        }
    });
}
else
    alert('Sending email is unavailable currently. PLease try after some time.');
} 

下面是每个用户下方显示的按钮代码。

<div class="send_email_notification">
<input type="submit" value="Send Email" onClick="sendEmail();">
</div>

一些帮助您解决问题的建议:

1 - 避免使用全局变量

在第一个代码中,循环访问所有范围以设置全局变量的值。在循环结束时,此全局变量将仅包含最后一封电子邮件。这可能是您问题的根源。

2 - 一种可能的解决方案

您的问题有不同的解决方案。这是一个:单击按钮时,从单击的按钮中检索带有一些jquery路径的所选电子邮件。例如,如果您的 html 是:

<div>
  <span class="email">user@domain.com</span>
  <div class="send_email_notification">
     <input type="submit" value="Send Email" />
  </div>
</div>

在你的javascript中,你可以通过这个查询来获取选定的电子邮件:

function sendEmail(event) {
   var target = event.currentTarget;
   var email = $(target).parent().parent().find(".email").text();
   // and so on...
 }
 $('.send_email_notification input').on('click', sendEmail);

注意:您还应该避免在 html 元素中使用 onClick 属性。一种更现代的方法是将javascript与html代码分开:这就是为什么我将其从HTML版本的代码中删除的原因。

相关文章: