Как изменить файл функции json_encode в php? - PullRequest
0 голосов
/ 28 августа 2018

код:

<script>
      $(document).ready(function(){
        var events = <?php echo $results; ?>;
        $("#calen").datepicker({
            beforeShowDay: function(date) {
                var result = [true, '', null];
                var matching = $.grep(events, function(event) {
                    return event.Date.valueOf() === date.valueOf();
                });

                if (matching.length) {
                    result = [true, 'highlight', null];
                }
                return result;
            },
            onSelect: function(dateText) {
                var date,
                    selectedDate = new Date(dateText),
                    i = 0,
                    event = null;

                while (i < events.length && !event) {
                    date = events[i].Date;

                    if (selectedDate.valueOf() === date.valueOf()) {
                        event = events[i];
                    }
                    i++;
                }
                if (event) {
                    alert(event.Title);
                }
            }
        });
      });
</script>

<?php
    $sqls = mysqli_query($con,"select pack_program, pack_duration, start_date, end_date from package_detail where pack_name = '".$row['pack_name']."'");
    while($fetch = mysqli_fetch_array($sqls))
    {
        $data[] = array(
                            'Title' => $fetch['pack_program'],
                            'Duration' => $fetch['pack_duration'],
                            'Date' => "new Date(".$fetch['start_date'].")"
                        );
    }
    $results = str_replace('</', '<\/', json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
?>

Ожидаемый результат:

var events = [{Title:"Tour Program : Delhi / Chandigargh Arrival - Shimla ( 02 Nights ) – Manali ( 03 nights ) – Chandigarh ( 01 night ) Delhi / Chandigargh Departure Total : 06 Nights & 07 Days Tour",Duration:"7 days 6 Nights",Date:new Date("08/28/2018")}];

Неожиданный вывод:

var events = [{"Title":"Tour Program : Delhi / Chandigargh Arrival - Shimla ( 02 Nights ) – Manali ( 03 nights ) – Chandigarh ( 01 night ) Delhi / Chandigargh Departure Total : 06 Nights & 07 Days Tour","Duration":"7 days 6 Nights","Date":"new Date(08/28/2018)"}];

В следующем коде я создал календарь событий, используя jQuery datepicker, который отлично работает для expected output, как я упоминал выше. Но это не работает для unexpected output упомянутого выше. Итак, как я могу изменить в $data[] файл, который дает мне expected output. Как я могу это сделать? Пожалуйста, помогите мне.

Спасибо

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Как вы ожидаете, new Date("08/28/2018") станет объектом Date, но при непредвиденном выводе это строка.

Позвольте вам попытаться изменить свой код следующим образом:

$data[] = array(
                        'Title' => $fetch['pack_program'],
                        'Duration' => $fetch['pack_duration'],
                        'Date' => date('Y-m-d', $fetch['start_date'])
                    );

Выход будет:

var events = [{"Title":"Tour Program : Delhi / Chandigargh Arrival - Shimla ( 02 Nights ) – Manali ( 03 nights ) – Chandigarh ( 01 night ) Delhi / Chandigargh Departure Total : 06 Nights & 07 Days Tour","Duration":"7 days 6 Nights","Date":"2018-08-28"}];

и он будет работать с datepicker

0 голосов
/ 28 августа 2018

Что вам нужно, это JSON.parse()

var events = <?php echo $results; ?>;
var obj = JSON.parse(events);

Чтобы узнать больше -> здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...