基本问题:具体何时设置 $_POST 和 $_GET 变量?我问的原因在下面解释。
提前披露:我在这里分享的文件是为了测试/学习目的,并不旨在实现任何有用的东西。我写它是为了将这个问题与我正在从事的项目的其他细节隔离开来。
这是我正在尝试做的总结:我从表单调用一个javascript函数
<form action="javascript:jsTest()" ... />
然后从 jsTest() 中,我根据 php 函数 phpTest() 的返回分配一个 javascript 变量:
var jsVar = <?php echo json_encode(phpTest()); ?>;
函数 phpTest() 只返回一个 $_POST 变量:
return $_POST['testName'];
这是完整的代码:
<?php
session_start();
function phpTest() {
return $_POST['testName'];
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>javascript/php test</title>
<script type="text/javascript">
function jsTest() {
var jsVar = <?php echo json_encode(phpTest()); ?>;
alert(jsVar);
}
</script>
</head>
<body>
<form method="POST" name="testForm" action="javascript:jsTest()">
<input type="text" name="testName" value="username" />
<input type="submit" value="submit" />
</form>
</body>
</html>
问题:警报总是显示null
。
我以两种方式对此进行了测试。1) 如果我将表单操作设置为单独的 .php 文件,则设置与表单输入字段关联的 $_POST 变量,并在浏览器中显示该文件中的这些 $_POST 值的回显。或者,2)如果我从 phpTest() 返回一个简单的字符串,
return 'hello kitty';
然后 javascript alert() 准确显示返回的字符串。因此,我认为可以安全地假设 $_POST 变量尚未设置。这让我想到了一个我无法找到答案的问题:
$_POST 变量究竟是什么时候设置的?我假设它是在页面重新加载之前(我的方法需要),并且我假设这是因为如果我在我的代码中使用 method="GET" ,我会看到 GET 变量附加到 URL 上而没有任何先前的页面重新加载。
提前致谢。
克里斯