gpt4 book ai didi

javascript - 为什么我不能使用 jQuery 将 php 变量发送到 javascript 变量?

转载 作者:行者123 更新时间:2023-11-30 09:53:02 26 4
gpt4 key购买 nike

我有使用 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 yv3只能在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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com