根据标题的主要接受程度,您如何解释以下内容:
...
$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。你能解释一下吗?
答案 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代码。