如何只运行一次javascript函数?
最近,我问了一个问题 答案对我来说非常有效,现在我进入了第二阶段,我想将javascript变量保存到php变量中,这样我就可以使用phpmail发送数据 我知道没有直接的方法将javascript变量的值分配给php变量 因此,我提出了以下代码:jQueryVer3.4.1分钟 index.php 此页面没有错误,可以正常工作。它收集keyup上的数据并将其设置为会话存储 index2.php 现在,这是我打算从index1.php获取所有数据的页面,通过将值设置为URL参数并使用php获取结果,将javascript变量转换为php变量 这是我的工作,除了部分,它是不断重新加载。根据,它将加载myFunc一次,然后停止它,但是,在我的情况下,它将在不停止函数的情况下永久循环如何只运行一次javascript函数?,javascript,php,jquery,Javascript,Php,Jquery,最近,我问了一个问题 答案对我来说非常有效,现在我进入了第二阶段,我想将javascript变量保存到php变量中,这样我就可以使用phpmail发送数据 我知道没有直接的方法将javascript变量的值分配给php变量 因此,我提出了以下代码:jQueryVer3.4.1分钟 index.php 此页面没有错误,可以正常工作。它收集keyup上的数据并将其设置为会话存储 index2.php 现在,这是我打算从index1.php获取所有数据的页面,通过将值设置为URL参数并使用php获取结
如何解决此问题以使函数只加载一次?在重新加载页面之前,请检查所需数据是否已在查询参数中-如果已在,请不要重新加载。检查一个现有参数的存在性,如果存在则不重新加载,或者添加一个布尔参数,如需要重新加载,可以在运行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
}