Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.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_Php_Jquery - Fatal编程技术网

如何只运行一次javascript函数?

如何只运行一次javascript函数?,javascript,php,jquery,Javascript,Php,Jquery,最近,我问了一个问题 答案对我来说非常有效,现在我进入了第二阶段,我想将javascript变量保存到php变量中,这样我就可以使用phpmail发送数据 我知道没有直接的方法将javascript变量的值分配给php变量 因此,我提出了以下代码:jQueryVer3.4.1分钟 index.php 此页面没有错误,可以正常工作。它收集keyup上的数据并将其设置为会话存储 index2.php 现在,这是我打算从index1.php获取所有数据的页面,通过将值设置为URL参数并使用php获取结

最近,我问了一个问题

答案对我来说非常有效,现在我进入了第二阶段,我想将javascript变量保存到php变量中,这样我就可以使用phpmail发送数据

我知道没有直接的方法将javascript变量的值分配给php变量

因此,我提出了以下代码:jQueryVer3.4.1分钟

index.php

此页面没有错误,可以正常工作。它收集keyup上的数据并将其设置为会话存储

index2.php

现在,这是我打算从index1.php获取所有数据的页面,通过将值设置为URL参数并使用php获取结果,将javascript变量转换为php变量

这是我的工作,除了部分,它是不断重新加载。根据,它将加载myFunc一次,然后停止它,但是,在我的情况下,它将在不停止函数的情况下永久循环


如何解决此问题以使函数只加载一次?

在重新加载页面之前,请检查所需数据是否已在查询参数中-如果已在,请不要重新加载。检查一个现有参数的存在性,如果存在则不重新加载,或者添加一个布尔参数,如需要重新加载,可以在运行myFunc时将其设置为false,然后仅在需要重新加载为true时运行myFunc。

为什么不使用sessionStorage并设置适当的标志

if (sessionStorage.getItem('myFlag') != 'yes') {
    sessionStorage.setItem('myFlag', 'yes');
    // do your stuff 
}

myFunc=函数{};这行代码在做什么?看起来OP试图让它这样,如果再次调用myFunc,它将不会重新加载页面。但是,它不会工作,因为重新加载页面会重置javascript,因此它会无休止地循环。这会阻止函数再次加载,但它对我不起作用。每次页面刷新时,它都会加载,从而形成一个无限的重新加载循环。我会彻底重新思考这个架构。这是非常脆弱的,我能想到的唯一方法是创建第三个页面,在其中通过重定向发送数据,或者在重定向时将其从本地存储中删除,这样您就知道无需再次执行此操作。这意味着如果发生错误,它将丢失。是否有特殊的需要这样做,而不仅仅是定期从index.php发送数据?如何停止页面重新加载。。。加载index2.php时不要加载index2.php
<body onload="myFunc()">
    <div id="display"></div>
    <div id="display2"></div>
    <div id="display3"></div>
    <script>
        var nameValisession = sessionStorage.getItem("nameValiSession");
        var phoneValisession = sessionStorage.getItem("phoneValiSession");
        var emailValisession = sessionStorage.getItem("emailValiSession");
        document.getElementById("display").innerHTML = nameValisession;
        document.getElementById("display2").innerHTML = phoneValisession;
        document.getElementById("display3").innerHTML = emailValisession;


        function myFunc(){
            myFunc = function(){}; 
            window.location.replace("index2.php?myName=" + nameValisession + "&myPhone=" + phoneValisession + "&myEmail=" + emailValisession); 
        };

    </script>

    <?php
        $myName = $_GET["myName"];
        $myPhone = $_GET["myPhone"];
        $myEmail = $_GET["myEmail"];

        echo "PHP RESULT: " . $myName . " - " . $myPhone . " - " . $myEmail;
    ?>

</body>
if (sessionStorage.getItem('myFlag') != 'yes') {
    sessionStorage.setItem('myFlag', 'yes');
    // do your stuff 
}