php首先完成执行,然后运行javascript

时间:2015-07-10 10:30:41

标签: javascript php

根据标题的主要接受程度,您如何解释以下内容:

       ...
       $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代码首先执行时,Javascript代码开始执行时$ temp1将等于2。因此,jstemp1将等于2而jstemp2将等于2.但是,令我惊讶的是,jstemp1 = 1且jstemp2 = 2。你能解释一下吗?

3 个答案:

答案 0 :(得分:2)

删除所有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)之前执行

答案 1 :(得分:1)

您的PHP代码与HTML / Javascript内联,它将首先在服务器上执行,为真,但是评估是按照您的顺序进行的写下来。

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

这是完全正常的。

答案 2 :(得分:0)

PHP在将页面发送到浏览器之前执行服务器端的代码。

浏览器收到:

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

当页面加载时,执行javascript代码。