我有功能
AddActivity(myCallBack函数);
sendMailToOrgs();
sendMailToMember();
一个接一个地被召唤。每次都很好。 但是我希望只有在AddActivity(myCallback)成功时才调用2个sendMail ...()函数。所以我将两个函数调用放入myCallback()函数中,该函数在AddActivity(myCallback)成功时触发。
function myCallback(response)
{
if (response > 0)
{
sendMailToOrgs();
sendMailToMember();
window.top.location = "http://www.mywebpage.ch/index.php?page_id=3292";
}
}
但是:senMailToOrgs()每次都正常工作。 sendMailToMember()只能像第二次一样工作。 当我更改顺序并首先放入sendMailToMember()和sendMailToOrgs()秒时,sendMailToMember()每次都有效,而另一个只有每秒一次。当我注释掉window.top.location ....这两封邮件都被发送了。
这两个函数将数据发送到一个php文件,该文件调用一个函数,该函数发送一个他们没有进行任何回调的电子邮件。 他们看起来几乎一样:
function sendMailToMember()
{
var data = "eventName=" + "<?php echo $event['name'];?>" + "&userEmail=" + "<?php echo $_SESSION['user'];?>" + "&first=" + "<?php echo $_SESSION['first']; ?>" + "&last=" + "<?php echo $_SESSION['last']; ?>";
$.ajax({
dataType: 'json',
url: 'stcg-json-responses.php?fct=emailSendToVolunteer',
data: data,
cache: false
});
}
答案 0 :(得分:0)
我找到了一个解决方法,在调用两个sendMail ...()函数之后我不直接调用重定向代码:
sendMailToOrgs();
sendMailToMember();
window.top.location = "http://
但我将sendback()函数添加到包含重定向的sendMailToMember()
window.top.location = "http://
这种方法的缺点是,在我单击“提交”按钮后,没有任何事情发生超过两秒钟,并且用户有足够的时间再次单击,这可能导致问题中提到的AddActivity(回调)函数获得执行并返回错误。然后调用myCallbackError()函数,该函数将用户重定向到另一个带有错误消息的站点。
答案 1 :(得分:0)
现在我通过将重定向代码移动到一个函数然后延迟函数
来解决了这个问题 function redirect()
{
if (response > 0)
{
window.top.location = "http://mywebpage.ch/index.php?page_id=3292";
}
};
setTimeout (redirect,1500);
但是我仍然不明白问题出现的原因: 1.为什么用户浏览器中的网页重定向会停止正在服务器上执行的php脚本? 2.为什么问题只出现在第二次?它几乎就像函数启动一样,然后在中间停止,并且第二次调用函数时执行完成。那可能吗?