我在 PHP 中有一个变量,我需要在 JavaScript 代码中使用该变量的值。如何将变量从 PHP 传输到 JavaScript?我的代码如下所示:获取值(); //
我在 PHP 中有一个变量,我需要在 JavaScript 代码中使用该变量的值。如何将变量从 PHP 传输到 JavaScript?
我有如下代码:
<?php
$val = $myService->getValue(); // Makes an API and database call
在同一页面上,我有需要将变量的值 $val
作为参数传递的 JavaScript 代码:
<script>
myPlugin.start($val); // I tried this, but it didn't work
<?php myPlugin.start($val); ?> // This didn't work either
myPlugin.start(<?=$val?>); // This works sometimes, but sometimes it fails
</script>
实际上有几种方法可以实现这一点。有些方法需要比其他方法更多的开销,而有些方法被认为比其他方法更好。
不分先后顺序:
在这篇文章中,我们将研究上述每一种方法,看看每种方法的优缺点,以及如何实现它们。
这种方法被认为是最好的,因为 你的服务器端和客户端脚本是完全分开的 .
使用 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。
<input type=hidden>
存储信息,因为从 中获取信息更容易 inputNode.value
,但这样做意味着您的 HTML 中有一个无意义的元素。HTML 具有 <meta>
用于有关文档的数据的元素,而 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 -->
祝你好运!
@SecondRikudo 在方法 3 中,该示例可以杀死该网站。示例:php $output = '