可能重复:
How to ask javascript wait for mysql assign value to php variable?
我听说有人说PHP代码将完成加载然后才开始加载javascript。 How to ask javascript wait for mysql assign value to php variable?
的信息但是当我写道:
<script type="text/javascript">
alert("<?php echo $username; ?>");
</script>
<?php $username = "abc"; ?>
它无法提醒php变量的值。这是因为javascript首先被加载,然后才开始加载php。那么服务器站点脚本的事实是完成加载然后只启动加载客户端站点脚本是错误的?
如果javascript可以在php之前执行,那么我有问题要求javascript等待mysql为php变量赋值。请帮助我在How to ask javascript wait for mysql assign value to php variable?
解决此问题答案 0 :(得分:9)
PHP在Web服务器上执行,生成浏览器要显示的html(或其他)页面。 JavaScript在客户端,在用户的浏览器中执行,因此根据定义,php在JavaScript执行之前已经完成执行。
你好像假设php运行,然后运行JavaScript,在同一个地方。这是一个谬论;您遇到的问题是,在PHP脚本分配/评估变量之前,您已将JavaScript变量分配给$username
变量的值;哪个应该在服务器上转换为:
<script type="text/javascript">
alert("<?php echo $username; ?>");
</script>
<?php $username = "abc"; ?>
至,在客户端:
<script type="text/javascript">
alert("");
</script>
因此,虽然你的脚本似乎什么都不做,或者做错了什么,但它正是你所说的那样做的。你应该尝试重新安排你的代码:
<?php $username = "abc"; ?>
<script type="text/javascript">
alert("<?php echo $username; ?>");
</script>
允许php评估/分配变量,然后在alert()
语句中设置/提供变量。
答案 1 :(得分:5)
在解析任何javascript之前,PHP都在服务器上运行。您需要在使用之前分配变量。这就是上面的问题。
答案 2 :(得分:4)
PHP不加载或执行Javascript。这是执行顺序:
所以是的,PHP将在执行Javascript之前完成执行。
答案 3 :(得分:1)
我听说有人说php代码会 完成加载然后才会开始 加载javascript。
这是绝对正确的,您的服务器脚本将首先运行。
它不alert()
的原因是因为$username
甚至还不存在......
一旦PHP脚本运行,它就完成了,除非你从AJAX调用更多。
答案 4 :(得分:1)
PHP在Web服务器上运行。它解析文件并返回HTML,如下所示:
<script type="text/javascript">
alert("");
</script>
当它到达客户端时,正如您所见,不再设置任何变量。