Загрузка данных из формы в Ajax-управляемую PHP-страницу с использованием jQuery.change - PullRequest
1 голос
/ 17 сентября 2009

Возможно, я совершаю глупую ошибку, но я новичок в мире Jquery и ищу какую-то помощь в этом вопросе.

У меня есть форма, в которой мне нужно проверить / проверить две даты, как только они меняют свои значения. Как только они меняются, у меня был вызов Ajax, который загружал страницу "checkdates.php" и передавал два бита данных. Дата, которая изменилась, и имя проекта "checkdates.php", используя GET и добавление данных в строку URL. Этот Ajax-вызов загрузил страницу в div с идентификатором «status», а страница php показала, каков был результат проверки даты.

Старый код использовал прототип для извлечения данных как функции, и я использовал событие onChange для элементов формы:

<script type="text/javascript" src="prototype.js"></script>
    <script type="text/javascript">
    /*function checkDate(date,project){
    if(date!==''){
    new Ajax.Updater('status', 'datechecker.php?date='+date+'&project='+project, { method: 'get' });
    } else {
    alert('enter a valid date!');
    }
    }
</script>

Код, который я пытаюсь перенести в jquery, теперь выглядит так:

<script type="text/javascript">
    $(document).ready(function() {
        $('input#date_to').change(function() {
        var datevalue = $(this).val();
        $('#status').load('datechecker.php?date='+datevalue+'&project='+<? echo $_COOKIE['department']; ?>);
        }
        );

        $('input#date_from').change(function() {
        var datevalue = $(this).val();
        $('#status').load('datechecker.php?date='+datevalue+'&project='+<? echo $_COOKIE['department']; ?>);
        }
        );
    });
    </script>

Я думаю, что это может быть проблема, вероятно, с тем, как я загружаю свои данные или как я прошу его проверить функцию .change, потому что она не срабатывает. Любая помощь будет замечательной. Опять отказ от ответственности: я новичок в jquery, поэтому, пожалуйста, будьте добры, если это какая-то явная идиотская ошибка.

EDIT: В соответствии с запросом HTML / PHP остальной части файла (извините за форматирование, это был быстрый и грязный проект, который был в последнюю минуту, но превратился в огромную головную боль):

<form id="form1" name="form1"  method="get" action="?page=post_request">
<div class="timeavailable">
<? 
    require('data.php');
    $name=$_COOKIE['un'];
    $query="SELECT * FROM time WHERE emp_name='".$name."'";
    $result=mysql_query($query);
    $num=mysql_num_rows($result);
    mysql_close();
    $i=0;
?>
Vac: <b><? echo mysql_result($result,$i,"vacationtime"); ?></b>   
Personal: <b><? echo mysql_result($result,$i,"personaltime"); ?></b>
Pts: <b><? echo mysql_result($result,$i,"points"); ?></b>
<input type="hidden" name="vacationtime" value="<? echo mysql_result($result,$i,"vacationtime"); ?>">
<input type="hidden" name="personaltime" value="<? echo mysql_result($result,$i,"personaltime"); ?>">
</div>
        <h1>Time Off Request Form</h1>
        <div class="header">
<div class="floatydetails">
<br>
Reason for Absence:<br>
<textarea name="reason_detail" id="reason_detail" rows="<?php echo $textareaheight; ?>" cols="<?php echo $textareawidth; ?>"></textarea>
<div id="status"></div>
<div id="daysrequested"></div>
</div>

        <div class="col1">
        Type of Absence Requested:<br>
            <label for="reason_for_request"></label>
                <select name="reason_for_request" id="reason_for_request">
                    <option value="Sick" >Sick</option>
                    <option value="Vacation" >Vacation</option>
                    <option value="Bereavement" >Bereavement**</option>
                    <option value="Doctor Appointment" >Doctor Appointment**</option>
                    <option value="Court" >Court*</option>
                    <option value="Jury Duty" >Jury Duty*</option>
                    <option value="Personal Day" >Personal Day</option>
                    <option value="Other" >Other</option>
                </select><br>
        <div class="col2">
            Date of Request (mm/dd/yyyy)<br/>
            <label for="date_from">From:</label> 
            <input type="text" name="date_from" id="date_from" class="required" /><br>
            <label for="date_to">To:</label>    
            <input type="text" name="date_to" id="date_to" class="required" /><br>
            Partial Request (HH:MM am/pm)<br/>
            <label for="date_from">From:</label> 
            <input type="text" name="partial_from" id="partial_from" class="date-pick"  /><br>
            <label for="date_to">To:</label>    
            <input type="text" name="partial_to" id="partial_to" class="date-pick" /><br>

        </div>
        </div>
        <div class="clear-fix"></div><br><br>
        <hr>
        <center><b>
        Note: If You do Not have the Time Available, Your request will be Denied.<br>
        * Proper Documentation is required Before approval is made.   ** Proper documenation is required upon return.
        </b></center>
        </div>
        <input type="hidden" name="do" value="post">
        <input type="hidden" name="emp_name" value="<? echo $_COOKIE['un']; ?>">
        <input type="hidden" id="projects" name="projects" value="<? echo $_COOKIE['department']; ?>">
        <input type="hidden" name="supervisor" value="<? echo $cms->grabItemByName(employees, $_COOKIE['user_id'], supervisor); ?>">
        <input type="hidden" name="emp_number" value="<? echo $cms->grabItemByName(employees, $_COOKIE['user_id'], employee_id); ?>">
        <input type="hidden" name="page" value="post_request">
        </form>

Ответы [ 3 ]

1 голос
/ 17 сентября 2009

Вот возможный ответ:

JQuery триггер события изменения

Также попробуйте посмотреть консоль в Firebug, чтобы убедиться, что ваша php-страница получает / возвращает правильные значения.

1 голос
/ 17 сентября 2009

Является ли $_COOKIE['department'] целым числом? В противном случае вы, вероятно, там будете иметь синтаксическую ошибку.

Обе функции кажутся идентичными, поэтому вы можете комбинировать их следующим образом:

<script type="text/javascript">
    $(document).ready(function() {
        $('input#date_to,input#date_from').change(function() {
            var datevalue = $(this).val();
            $('#status').load('datechecker.php?date='+datevalue+'&project='+<? echo json_encode($_COOKIE['department']); ?>);
        });
    });
</script>
0 голосов
/ 19 сентября 2009

Я нашел решение после некоторой вашей помощи и проб и ошибок. Используя .ajax, я смог добиться большей гибкости, чтобы делать то, что хотел.

<script type="text/javascript">
    $(document).ready(function() {
        $('#date_to,#date_from').change(function() {
        //$('input').change(function() {
            var datevalue = $(this).val();
            var project = $('#projects').val();
            $('#status p').load('datechecker.php?date='+datevalue+'&project='+project);
        });
    });
</script>

Надеюсь, это кому-нибудь поможет.

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