P粉4638111002023-08-28 10:40:20
我通常在 HTML 中使用 data-* 屬性。
<div class="service-container" data-service="<?= htmlspecialchars($myService->getValue()) ?>" > </div> <script> $(document).ready(function() { $('.service-container').each(function() { var container = $(this); var service = container.data('service'); // Var "service" now contains the value of $myService->getValue(); }); }); </script>
此範例使用 jQuery,但它可以適用於其他程式庫或普通 JavaScript。
您可以在此處閱讀有關資料集屬性的更多資訊:https: //developer.mozilla.org/en-US/docs/Web/API/HTMLElement.dataset
P粉5026087992023-08-28 00:24:11
實際上有幾種方法可以做到這一點。有些需要比其他更多的開銷,有些被認為比其他更好。
排名不分先後:
在這篇文章中,我們將研究上述每種方法,以了解每種方法的優缺點,以及如何實現它們。
此方法被認為是最好的,因為您的伺服器端和客戶端腳本是完全分開的。
使用 AJAX,您需要兩個頁面,一個是 PHP 產生輸出的頁面,第二個是 JavaScript 取得該輸出的頁面:
/* Do some operation here, like talk to the database, the file-session * The world beyond, limbo, the city of shimmers, and Canada. * * AJAX generally uses strings, but you can output JSON, HTML and XML as well. * It all depends on the Content-type header that you send with your AJAX * request. */ echo json_encode(42); // In the end, you need to `echo` the result. // All data should be `json_encode`-d. // You can `json_encode` any value in PHP, arrays, strings, // even objects.
<!-- snip --> <script> fetch("get-data.php") .then((response) => { if(!response.ok){ // Before parsing (i.e. decoding) the JSON data, // check for any errors. // In case of an error, throw. throw new Error("Something went wrong!"); } return response.json(); // Parse the JSON data. }) .then((data) => { // This is where you handle what to do with the response. alert(data); // Will alert: 42 }) .catch((error) => { // This is where you handle errors. }); </script> <!-- snip -->
以上兩個檔案的組合將在檔案載入完成時發出警報 42
。
這種方法不如 AJAX 好,但它仍然有其優點。 PHP 和 JavaScript 之間仍然相對分開,從某種意義上來說,JavaScript 中沒有直接的 PHP。
來儲存訊息,因為獲取資訊更容易超出inputNode.value
,但這樣做意味著HTML 中存在無意義的元素。 HTML 具有用於表示有關文件的資料的
元素,並且HTML 5 引入了data-*
屬性,用於專門用於使用可與特定元素關聯的JavaScript讀取的資料。 這樣,我們的想法是創建某種不會向使用者顯示但對 JavaScript 可見的元素。
<!-- snip --> <div id="dom-target" style="display: none;"> <?php $output = "42"; // Again, do some operation, get the output. echo htmlspecialchars($output); /* You have to escape because the result will not be valid HTML otherwise. */ ?> </div> <script> var div = document.getElementById("dom-target"); var myData = div.textContent; </script> <!-- snip -->
這可能是最容易理解的。
實作相對簡單:
<!-- snip --> <script> var data = <?php echo json_encode("42", JSON_HEX_TAG); ?>; // Don't forget the extra semicolon! </script> <!-- snip -->
祝你好運!