将变量延迟传递给PHP页面中的HTML元素,或者用更新后的值替换它
<p><br /></p>
<pre class="brush:bash;toolbar:false;">/public/register.php ## [1] "public" 注册表单
/public/js/checkout.js ## [2] "public" 付款处理
/src/register.php ## [3] "private" 附加处理
</pre>
<ul>
<li>[1] 通过 <code><script src="js/checkout.js"></script></code> 加载 [2]</li>
<li>[1] 通过 <code>require __DIR__ . '/../src/register.php';</code> 包含 [3]</li>
</ul>
<p>[1] 包含一个 HTML 元素(作为 HTML 代码包含在 PHP 文件中,即在 <code><php ... ?></code> 标签之外):</p>
<pre class="brush:html;toolbar:false;"><div id="secret" style="display: none;">
<?php
echo htmlspecialchars($secret_var);
?>
</div>
</pre>
<p><code>$secret_var</code> 在 [3] 中声明/实例化。</p>
<p>[2] 这个 JS 文件包含</p>
<pre class="brush:js;toolbar:false;">var div = document.getElementById("secret");
var secret_var = div.textContent;
console.log(secret_var)
</pre>
<p>[3] 包含</p>
<pre class="brush:php;toolbar:false;">session_start();
// 付款合作伙伴处理代码,响应
$secret_var = json_encode(array(secret_var);
$_SESSION['secret_var'] = $secret_var;
</pre>
<p><code>$secret_var</code> 作为一个 <code>$_SESSION</code> 变量从 [3] 传递到 [1],[2] 在其中检索它。</p>
<p>当从 JavaScript 文件的 <code>console.log</code> 语句中在浏览器中回显 <code>$secret_var</code> 时,它返回 <code>null</code>。</p>
<p>当从 <code>src/register.php</code> 中回显 <code>$secret_var</code>(在渲染的 <code>registration.php</code> 页面中显示),它具有正确的(字符串)值。</p>
<p>如何延迟将 <code>$secret_var</code> 传递给 HTML 的 <code>#secret</code> 元素,或者用更新的(非空)值替换它?</p>