单击Sort By Date Created
按钮时,字符串date
将传递给函数sort()
,警报1(请参阅代码)将打印字符串date
。
字符串date
存储在第一个if
语句的会话中,警报2打印date
。问题是date
只是暂时存储,而警报3始终会警告service
,无论类型如何。如果我改变if语句的顺序,那么最后一个if语句的字符串总是存储在会话中。
<?php session_start(); ?>
<html>
<head>
<script>
function sort(type){
alert('<?php echo $_SESSION['sort']; ?>'); ///ALERT 1
if (type == 'date'){
<?php $_SESSION['sort'] = 'date'; ?>
alert('<?php echo $_SESSION['sort']; ?>'); ///ALERT 2
}
else if (type == 'cost'){
<?php $_SESSION['sort'] = 'cost'; ?>
alert('<?php echo $_SESSION['sort']; ?>');
}
else if (type == 'service'){
<?php $_SESSION['sort'] = 'service'; ?>
alert('<?php echo $_SESSION['sort']; ?>');
}
alert('<?php echo $_SESSION['sort']; ?>'); ///ALERT 3
}
</script>
</head>
<body>
<input type="button" onclick="sort('date');" value="Sort By Date Created">
<input type="button" onclick="sort('cost');" value="Sort By Cost">
<input type="button" onclick="sort('service');" value="Sort By Service">
</body>
</html>
答案 0 :(得分:0)
您对客户端和服务器端代码之间的区别感到困惑。您基本上编写了以下代码:
alert('service');
<?php
$_SESSION['sort'] = 'date';
$_SESSION['sort'] = 'cost';
$_SESSION['sort'] = 'service';
?>
if (type == 'date'){
alert('service'); ///ALERT 2
}
else if (type == 'cost'){
alert('service');
}
else if (type == 'service'){
alert('service');
}
PHP不尊重您的javascript if
语句。 PHP将编译成一个静态网页,这是我编写的代码的后半部分。
我觉得答案试图解释客户端和服务器端代码之间的区别对于StackOverflow来说有点宽泛和冗长,但是在那个主题上有很多资源。