最近,我在how to get the data value of input without a submit button上问了一个问题。
答案对我来说非常有效,现在我进入了第二阶段,我想将javascript的变量保存到php的变量中,以便可以使用phpmail发送数据。
我了解没有直接的方法可以将javascript变量的值分配给php变量。
因此,我想出了以下代码:( jquery 3.4.1分钟)
index.php
<form>
<input type="text" name="nameValidation" id="nameValidation" placeholder="Name">
<input type="number" name="phoneValidation" id="phoneValidation" placeholder="Phone">
<input type="email" name="emailValidation" id="emailValidation" placeholder="Email">
</form>
<div id="display"></div>
<script>
$(function() {
$('#nameValidation').on('input', function() {
var nameValisession = $(this).val();
sessionStorage.setItem("nameValiSession", nameValisession);
});
$('#phoneValidation').on('input', function() {
var phoneValisession = $(this).val();
sessionStorage.setItem("phoneValiSession", phoneValisession);
});
$('#emailValidation').on('input', function() {
var emailValisession = $(this).val();
sessionStorage.setItem("emailValiSession", emailValisession);
});
});
window.onbeforeunload = function() {
return "email will get sent!";
}
</script>
此页面没有错误,可以正常工作。它收集有关keyup的数据并将其设置为会话存储。
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>
现在,这是我打算从index1.php
获取所有数据的页面,通过将这些值设置为URL参数并使用PHP来获取结果,将javascript的变量转换为php的变量。
这对我有用,除了零件,它一直在重新加载。根据{{3}},它将先加载myFunc
,然后将其停止,但是,就我而言,它是永久循环的,没有停止该函数。
如何解决此问题以使函数仅加载一次?
答案 0 :(得分:1)
在重新加载页面之前,请检查所需的数据是否已经在查询参数中-如果已存在,请不要重新加载。请检查现有参数之一的存在,如果存在则不重新加载,或者添加一个myFunc
这样的布尔参数,可以在运行myFunc
时将其设置为false,然后仅运行{ {1}}(如果needs_reload
是true
。
答案 1 :(得分:1)
为什么不使用sessionStorage并设置适当的标志?
if (sessionStorage.getItem('myFlag') != 'yes') {
sessionStorage.setItem('myFlag', 'yes');
// do your stuff
}