jquery не загружает () элементы - PullRequest
0 голосов
/ 11 февраля 2012

Мне трудно понять, что не так с функцией load () в приведенном ниже коде.То, что этот код делает в основном, это получение даты (названной в виде табличной даты) от пользователя через форму (чей идентификатор caltag) и выдаёт таблицу со всеми событиями того дня.Но какую бы дату я ни дал через форму, я всегда получаю расписание на сегодня.Я не уверен, даже если часть jquery выполняется полностью, потому что кнопка отправки даже отключена, как говорит код.Более того, я не знаю, как отлаживать JS-программы.Застряли на это часами.Любые предложения будут очень полезны.

$("#caltag").submit(
                function(e){
                    $("#caltag").attr('action', '/table/fetch/');
                    e.preventDefault();
                    $("submit").attr('disabled',true);
                    var calform=$("#caltag");
                    var values = $("#caltag").serializeArray();
                    $("#table").load(
                        $("#caltag").attr('action') + "#table", 
                        values, 
                        function() {
                            $("#table").hide().fadeIn(1000);
                            $("#getdate").attr('disabled', false);
                        });});

просмотреть часть формы

def table(request):  #     '/table/fetch/' requests of this view
events=[['_'] * 5 for row in range(5)]
if request.method=='POST':
    datestring=request.POST['tabledate']
    date=datetime.strptime(datestring,'%m/%d/%Y').strftime('%Y-%m-%d')
else:
    date=datetime.today()
eventset=Location.objects.filter(eventdate=date)
for event in eventset:
    events[event.x][event.y]=event
return render(request, 'scheduler/table.html',{'events':events,'tabdate':date})

html для того же.

<div id="cal" class="span-10">
                <form method='POST' id='caltag' action="/table/fetch/">
                    <p>
                        <label for="datepicker">tabledate:</label>
                        <input type="text" id="datepicker" name="tabledate" />
                    </p>
                    <input type='submit' id="getdate">
                </form>
            </div>

Ответы [ 2 ]

0 голосов
/ 11 февраля 2012

Согласно документам JQuery для .load:

Если в строку включен один или несколько пробельных символов, предполагается, что часть строки, следующая за первым пробелом, является селектором jQuery, которыйопределяет содержимое для загрузки.

Если это то, что вы пытаетесь достичь, вам не хватает места.

0 голосов
/ 11 февраля 2012

Почему вы добавляете строку "#table" в URL?

$("#caltag").attr('action'), 

Показывает ли var values = $("#caltag").serializeArray(); действительные данные? попробуйте console.log(values); в строке ниже, чтобы убедиться, что сгенерированы правильные данные

Убедитесь, что вы проверили фактический запрос, чтобы убедиться, что отправлены правильные параметры и получен правильный контент.

Почему бы вам просто не отправить значение #datepicker? var values = { 'date': $("#datepicker").val() };

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