JavaScript:在重定向到

时间:2018-04-10 16:11:10

标签: javascript redirect

我有功能

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
    });
}

2 个答案:

答案 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.为什么问题只出现在第二次?它几乎就像函数启动一样,然后在中间停止,并且第二次调用函数时执行完成。那可能吗?