Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检测是否执行了函数_Javascript_Jquery - Fatal编程技术网

Javascript 检测是否执行了函数

Javascript 检测是否执行了函数,javascript,jquery,Javascript,Jquery,我有以下功能: function enviarMail() { for (var x = 1; x <= idShort; x++) { var nume = $('#Num' + x).text(); var purp = $('#Pur' + x).text(); var open = $('#Open' + x).text(); var close = $('#Close' + x).text();

我有以下功能:

function enviarMail() {
    for (var x = 1; x <= idShort; x++) {
        var nume = $('#Num' + x).text();
        var purp = $('#Pur' + x).text();
        var open = $('#Open' + x).text();
        var close = $('#Close' + x).text();
        var owner = $('#Owner' + x).text();
        var fam = $('#Fam' + x).text();
        var vs = $('#Vs' + x).text();
        var sta = $('#Sta' + x).text();
        var mail = $('#Mail' + x).text();    

            $.ajax({
                type: 'POST', //POST | GET
                url: urlServer + 'ws_alerts.asmx/SendMailExp',
                data: '{"us":"' + owner +
                    '","email":"' + mail +
                    '","vs":"' + vs +
                    '","fam":"' + fam +
                    '","pur":"' + purp +
                    '","open":"' + open +
                    '","close":"' + close +
                    '","id":"' + nume + '"}', 
                dataType: 'json',
                contentType: 'application/json',
                timeout: 600000,
                error: function (xhr) {
                    bootbox.alert("No se pudo enviar el correo.");
                },
                success: function (data) {

                }
            });
    }
}
函数enviarMail(){

对于(var x=1;x您要求的内容需要从服务器端强制执行。由于客户端可以随时从任何设备登录(如您所述),因此无法在客户端维护此功能

您希望以某种方式维护所有客户端的状态。您需要使用
cookies
session
来实现这一点,因为它们提供了不同客户端和服务器之间的状态共享。因为只有一台服务器(理论上),可以对其进行编程,以了解用户在一天内是否执行了操作。然后可以通过
会话
/
cookie

注意:这都是假设您拥有某种身份验证/会话,可以在服务器和客户端之间共享。否则,当您从不同的设备/浏览器打开客户端时,服务器无法识别您

该过程可以如下所示:

  • 用户从ClientA登录。在服务器端(在诸如Redis或Memcache之类的内存存储中,或在DB中),服务器检查用户的id,以查看
    functionTriggered
    是否已为true。如果否,则在auth响应中,服务器发送
    functionTriggered=false
    标志(在客户端上设置cookie)
  • ClientA进行AJAX调用,服务器在存储中设置
    functionTriggered=true
  • 用户从ClientB登录。登录后,服务器会看到
    functionTriggered=true
    ,因此会发送此标志。服务器会设置一个指示此标志的cookie。客户端会看到此标志并跳过AJAX请求

需要从服务器端强制执行您的请求。由于客户端可以随时从任何设备登录(如您所述),因此无法在客户端维护此功能

您希望以某种方式维护所有客户端的状态。您需要使用
cookies
session
来实现这一点,因为它们提供了不同客户端和服务器之间的状态共享。因为只有一台服务器(理论上),可以对其进行编程,以了解用户在一天内是否执行了操作。然后可以通过
会话
/
cookie

注意:这都是假设您拥有某种身份验证/会话,可以在服务器和客户端之间共享。否则,当您从不同的设备/浏览器打开客户端时,服务器无法识别您

该过程可以如下所示:

  • 用户从ClientA登录。在服务器端(在诸如Redis或Memcache之类的内存存储中,或在DB中),服务器检查用户的id,以查看
    functionTriggered
    是否已为true。如果否,则在auth响应中,服务器发送
    functionTriggered=false
    标志(在客户端上设置cookie)
  • ClientA进行AJAX调用,服务器在存储中设置
    functionTriggered=true
  • 用户从ClientB登录。登录后,服务器会看到
    functionTriggered=true
    ,因此会发送此标志。服务器会设置一个指示此标志的cookie。客户端会看到此标志并跳过AJAX请求

我同意@dustinothless,但与Dustin所说的相反,我建议单独打一个电话(以保持事情的独立性并维护软件工程原则)服务器请求是否可以发送AJAX调用。但是,服务器将根据之前是否收到请求做出决定——这可以通过使用数据库或使用比较上次修改日期的文件来完成(这样您也可以记录)--如果它已经收到一个请求,那么服务器将给出执行AJAX调用的OK


尽管上述方法可行,但效率不高,也不安全,因为不管服务器怎么说,客户端都可能发送AJAX请求(即黑客可能导致DoS攻击),因此,您应该只使用一个函数(此调用偶数),并让服务器决定(使用上述方法)是否发送电子邮件。

我同意@Dustinothless,但与Dustin所说的相反,我建议单独打一个电话(将事情分开并维护软件工程原则)服务器请求是否可以发送AJAX调用。但是,服务器将根据之前是否收到请求做出决定——这可以通过使用数据库或使用比较上次修改日期的文件来完成(这样您也可以记录)--如果它已经收到一个请求,那么服务器将给出执行AJAX调用的OK


尽管上述方法可行,但效率不高,也不安全,因为不管服务器怎么说,客户端都可能发送AJAX请求(即黑客可能导致DoS攻击),因此,您应该只使用一个函数(此调用偶数),并让服务器决定(使用上述方法)是否发送电子邮件。

对所有用户只执行一次,而不是对每个用户执行一次?您需要维护服务器上的状态。该功能需要执行AJAX调用,以确定当天是否有其他用户运行过该功能。根据您的要求,我相信您需要结合后端脚本和DB或cron job您需要一台服务器来完成此任务。您有应用程序服务器吗?@Barmar是的,所有用户只执行一次。您不需要任何类似的操作。只需要一个表来存储上次运行函数的时间。下次用户登录时,请检查日期是否相同。对所有用户只执行一次,而不是对每个用户执行一次?您需要n服务器上的状态。该函数需要