1

ページをリロードしない時間に基づいて、いくつかの要素にクラスを追加する必要があります

ページの読み込み時にこの配列を作成しています。開始時刻、終了時刻、および識別子があります。

$hrs = array(
    array("2013-07-27 21:00", "2013-07-27 22:00", "one"),
    array("2013-07-27 22:00", "2013-07-27 23:00", "two"),
    array("2013-07-27 23:00", "2013-07-28 00:00", "three"),
);

次に、現在の時刻を取得し、配列から識別子を取得します。このスクリプトを time.php を使用して別のファイルで実行しようとしましたsetIntervalが、渡すことができません$hrs

<ul>
      <li class="one">1</li>
      <li class="two">2</li>
      <li class="three">3</li>


</ul>

var className = "<?php echo $class_name"; ?>
$(className).addClass("red");

ページを更新する必要がないように、これを実行する適切な方法は何ですか? 私はこのようなことをしましたが、エラーを警告します:

* 以下の作業コード* ***

<script>

var hrs = '<?php echo json_encode($hrs); ?>';

//get active class from time.php
  $.ajax({
    url : 'http://domain.com/time.php',
    type : 'POST',
data : { val : hrs },
    dataType : 'json',
    success : function (result) {
       className = result['current_class'];

    },
    error : function () {
       alert("error");
    }
})

</script>

time.php

        $hrs = json_decode($_POST['val']);

    date_default_timezone_set('Europe/Bucharest');
    $date  = date('Y/m/d H:i');

    $test = strtotime($date);

    $now = date("Y-m-d H:i", $test);

    $class_name = "";
    foreach ($_POST['val'] as $h) {
    if ($h[0] <= $now and $now <= $h[1]) {
        $class_name = $h[2];fa
        break;
    }
    } 

$class = array(
        'current_class' => ( $class_name ),
    );
    echo json_encode($class);
4

3 に答える 3

1

どちらの言語も、他の言語の内部についての手掛かりを持っていません。完全な配列を渡すための最善の策は、AJAX サイド配列を JSON にエンコードし、それを PHP スクリプトに渡し、json_decodeを使用して PHP 配列にデコードすることです。

php がこれを配列として解釈するのと同じ名前で、最後に角括弧を付けてパラメーターを渡すこともできます。すなわち

file.php?p[]=1&p[]=2&p[]=3&p[]=4&p[]=5

$_GET['p']1 ~ 5 を含む 5 項目の配列になります。

同じことが投稿にも当てはまります。複数の を投稿すると、すべての要素の配列としてp[]終了します。$_POST['p']

于 2013-07-31T07:20:33.937 に答える