我正在研究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下面的按钮,问题就在这里,所以url中的参数应该是user@A.com,如果点击了用户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>
答案 0 :(得分:0)
一些建议可以帮助您解决问题:
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版本中删除它。