2017-08-18 12 views
-1

Sort By Date Createdボタンをクリックすると、sort()文字列にdateが渡され、警告1(コード参照)が文字列dateを出力します。 文字列dateは、最初のifステートメントのセッションに格納され、警告2はdateを出力します。問題はdateが一時的にしか格納されておらず、アラート3は常に種類にかかわらずserviceアラートです。 if文の順序を変更すると、最後のif文の文字列が常にセッションに格納されます。セッションは最後のセッション値を変更する前にデータを1秒間保存するだけです

<?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

クライアント側とサーバー側のコードの違いについては混乱しています。あなたは、基本的に以下のコードを書かれている:

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は私が書いたコードの後半部分である静的なWebページにコンパイルされます。

私は、クライアント側とサーバー側のコードの違いを説明しようとすると、StackOverflowのための広範な、そして長引いている答えを感じていますが、そこには豊富なリソースがあります。

+0

ありがとうございました。代わりにGETを使用して別のページにデータを渡してみて、そこに保存してみます:) – Demi

関連する問題