將變數延遲傳遞給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>