PHP首先完成执行的,那么JavaScript执行

PHP首先完成执行的,那么JavaScript执行

问题描述:

根据主体验收的称号,你怎么解释如下:PHP首先完成执行的,那么JavaScript执行

 ... 
     $temp1=$_POST['expert_id']; ?> 
     <script type="text/javascript"> 
      var jstemp1 =<?php echo json_encode($temp1); ?>; 
     </script> 
     <?php   

     $temp1=$_POST['answers_id']; ?> 
     <script type="text/javascript"> 
      var jstemp2 =<?php echo json_encode($temp1); ?>; 
     </script> 

假设$ _ POST [ 'expert_id'] = 1,$ _ POST ['answers_id “] = 2。我的想法是,当PHP代码开始执行时,$ temp1将等于2,因为PHP代码首先执行。因此,jstemp1会等于2,jstemp2会等于2.但是,令我大吃一惊的是,jstemp1 = 1和jstemp2 = 2。你能解释一下吗?

+0

由于您已将$ _POST ['expert_id']'(大概1)到'$ _POST ['answers_id']'(大概是2)的PHP变量'$ temp1'的值重新分配。 – CD001

+0

你没有看到我的观点。当Javascript开始运行时,$ temp1 = 2,不是吗? –

+0

不 - 想象你正在用PHP语言编写** all **你的JavaScript语句; 'echo '你仍然将代码推送到输出缓冲区(屏幕),但JS不会被执行,因为它的输出(与加载正常HTML页面) – CD001

删除所有的JavaScript,你应该看到服务器端发生了什么;你是从字面上做:

$temp1=$_POST['expert_id']; 
echo json_encode($temp1); 

$temp1=$_POST['answers_id']; 
echo json_encode($temp1); 

所以,如果$_POST['expert_id'] = 1$_POST['answers_id'] = 2 ...

$temp1=1; 
echo json_encode($temp1); 
// outputs 1 

$temp1=2; 
echo json_encode($temp1); 
// outputs 2 

那么你就会有客户端是:

<script type="text/javascript"> 
    var jstemp1 =1; 
</script> 

<script type="text/javascript"> 
    var jstemp2 =2; 
</script> 

所有服务器端代码(PHP)在客户端代码(JavaScript)之前执行

在页面发送给浏览器之前,PHP在服务器端执行代码。

浏览器接收:

<script type="text/javascript"> 
    var jstemp1 =1; 
</script> 
<script type="text/javascript"> 
    var jstemp2 =2; 
</script> 

,并加载页面时执行JavaScript代码。

您的PHP代码与HTML/Javascript内嵌,它将首先在服务器上执行,为true,
,但评估按照您编写它的顺序完成。

给变量赋值,然后打印出来。
之后,您为同一个变量分配一个不同的值,覆盖它,然后将其打印出来。

这是完全正常的。