Ним — данные не могут передаваться между функциями с помощью пролога Нима.

У меня написан код HTML и JS, и он извлекает данные по ссылке «/availability-json».

      <div class="col-lg-4">
                    <div class="room-booking">
                        <h3>Your Reservation</h3>
                        <form id="f2" method="post" action="" class="needs-validation">
                            <input type="hidden" name="room_id" value="1">
                            <div class="check-date">
                                <label for="date-in">Check In:</label>
                                <input type="text" class="date-input" name="start" id="date-in" autocomplete="off">
                                <i class="icon_calendar"></i>
                            </div>
                            <div class="check-date">
                                <label for="date-out">Check Out:</label>
                                <input type="text" class="date-input" id="date-out" name="end" autocomplete="off">
                                <i class="icon_calendar"></i>
                            </div>
                            <div class="select-option">
                                <label for="guest">Guests:</label>
                                <select id="guest">
                                    <option value="">3 Adults</option>
                                </select>
                            </div>
                            <div class="select-option">
                                <label for="room">Room:</label>
                                <select id="room">
                                    <option value="">1 Room</option>
                                </select>
                            </div>
                            <button type="submit" id="b2">Check Availability</button>
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </section>
    <!-- Room Details Section End -->

    <script>
        const dateIn = document.getElementById('date-in');
        const dateOut = document.getElementById('date-out');
        
        if (dateIn !== null && dateOut !== null) {
            document.getElementById('b2').onclick = function(event){
                event.preventDefault();
                console.log('clicked');

                let form = document.getElementById('f2');
                let formData = new FormData(form);
                formData.append("room_id", "1")

                fetch('/sona-master/availability-json', {
                    method: 'post',
                    body: formData,
                })
                    .then(response => response.json())
                    .then(data => {

                    if (data.ok) {
                        Notiflix.Notify.success('<p>Room is available</p>' + '<p><a href="#!" class="btn btn-primary">' + 'Book Now</a></p>')
                    } else {
                        Notiflix.Notify.failure('Room is not available')
                    })
               
            };
        }
    </script>

Но моя серверная функция для ссылки «/availability-json» отображается пустой.

      import prologue, json
import times
import asyncdispatch
import strutils

import ../views/[index, layout, choose_room]
import ../database/roomrestrictions
import ../models/models

proc checkRoom*(ctx: Context) {.async.} =
  
  var sd = ctx.getFormParams("start")
  var
    ed = ctx.getPostParams("end")
  var

    startDate = parse(sd, "d MMMM, yyyy")
  var
    endDate = parse(ed, "d MMMM, yyyy")
    roomi = ctx.getPostParams("room_id")
  var

    roomID = parseInt(roomi)
    # roomID = parseInt(room_id)
  echo roomID
  var

    db = newDatabase3()

    available = db.searchAvailabilityByDatesByRoomID(startDate, endDate, roomID)

    a = %*
      {"ok": available, "message": "", "roomID": $roomID, "startDate": sd, "endDate": ed}

  resp jsonResponse(a)

Пожалуйста, помогите решить эту проблему, и вы можете проверить код здесь .

1 ответ

The ctx.getPostParams()здесь не будет работать, поскольку он находится внутри формы. Нам нужно использоватьctx.getFormParams(). Вот примерvar ed = ctx.getFormParams("end"). Спасибо

Другие вопросы по тегам