我有使用 javascript 变量的 javascript 函数,来自使用 jQuery 的 php 变量。代码如下所示:
jQuery:
$(document).ready(function(){
var v1 = <?php echo json_encode($v1,JSON_NUMERIC_CHECK); ?>;
});
javascript函数
function abc(){
alert(v1);
}
我无法打印出 v1 的值,但是当我不使用 jquery 将 php 变量发送到 javascript 变量时,我在 php 中的 $v1 之后使用以下代码
<script type="text/javascript">
var v1 = <?php echo json_encode($v1,JSON_NUMERIC_CHECK); ?>;
</script>
并且该函数可以打印出v1的值。
但是,我想查看我已经使用了哪些变量并在顶部而不是底部查看它们。所以,我决定使用 jquery 但它失败了。哪里出错了?
对我有用的第二种方法如下所示:
<!DOCTYPE html>
<html>
<head>
<script>
function abc(){
alert(v1);
}
</script>
</head>
<body>
<?php
$sql = "SELECT r_ID,r_cname,address FROM rest ORDER BY count2+count3 DESC";
$result = $conn->query($sql);
if($result->num_rows > 0){
while($row = $result->fetch_array()){
array_push($name,$row["r_cname"]);
}
}
?>
<script>
var v1 = <?php echo json_encode($name); ?>;
</script>
</body>
</html>
为什么没有封装问题?
最佳答案
你的 alert(v1)
需要在同一函数内 var v1 = ...
是在。并且 JSON 需要有效才能打印出有效的对象。
一个 PHP 打印变量通常需要 不 在 jQuery 中。它几乎肯定不需要在 jQuery 函数中,相信我,因为它通常只是一段数据。
我总是使用这种方法/做法:
<?php
//My businesses
?>
<!DOCTYPE html>
<html>
...
<head>
<script>
//By the way, HTML5 don't require you to state the type of script, it is defaulted to JavaScript.
var x = <?php echo json_encode($x, JSON_UNESCAPED_UNICODE);?>
</script>
<script>
//Rest of my code
$(function(){
//My jQuery here
})
</script>
</head>
<body>
...
</body>
</html>
为什么在 jQuery 中声明变量“不起作用”
确实如此,但在 $(function(){})
的范围之外, 没有人可以访问里面定义的变量。它是JS的一个基 native 制。另一方面,function(){}
里面$()
是一个参数,这是它无法从外部获取值的第二个原因。
例子:
var a = 3;
function(){
var b = 4;
a; //<-- 3
};
b; //<-- undefined
为什么第二个脚本有效
假设您的代码如下所示:
...
<script>
var v1 = <?php echo json_encode($v1, JSON_UNESCAPED_UNICODE);?>
</script>
...
<script>
$(function(){
v1; //There is a value
})
</script>
...
因为你的新v1
变量在 <script>
下定义, 它是一个全局变量。可以在网页上的任何位置访问全局变量。
相比之下,局部变量不能在它所在的范围之外访问。看这个 TreeMap :
window
|- v1
`- function x
|- v2
`- function y
`- v3
基本上,一个变量只能被它的 child 访问,而不能被它的 parent 访问。所以:
v1
function x
内外均可访问和 function y
但是v2
只能在function x
内部访问和 function y
和 v3
只能在function y
里面访问
下表列出了哪些变量可以在哪里访问:
globally | function x | function y
------------|------------|-----------
v1 ✓ | ✓ | ✓
------------|------------------------
v2 | ✓ | ✓
------------|------------------------
v3 | | ✓
最终答案
您只需要这样做:<script>var v1 = <?php echo json_encode($v1);?></script>
在您的网页上使用变量之前。
关于javascript - 为什么我不能使用 jQuery 将 php 变量发送到 javascript 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35334516/