Не отрабатывает код!
Проблема решена самым элементарным способом! Создал ещё одну таблицу, в неё записывается выбранная сейчас дата! После идёт к ней запрос, узнаём дату, фильтруем, и выводим аяксом (подгружаем).
---------------------------------- ТЕМУ МОЖНО ЗАКРЫВАТЬ! ---------------------------------- Доброй ночи коллеги! Столкнулся с проблемой на аяксе! Вот о чудо тестовая вещь! Для дальнейшего понимания о чём идёт речь, перейдите пожалуйста на сайт! И выполните инструкцию! По умолчанию в селекте стоит "Работа", нажмите "показать". Перед вами откроется табличка! Рядом с к нопкпой "показать" появиться фильтр" по дате начала (колонка подписана в таблице)! Если мы кликаем на кнопку "фильтр" и оба поля пусты, то нам выдаст "alert" что вы не заполнили дату! Если заполнить хоть одно поле или оба "С (дата) по (дата)", то нам выдаёт такое сообщение: Код:
Notice: Undefined index: in_filter В js строка alert(data) показывает, что фильтр работает нормально, так как в дата приходит ответ отфильтрованый, но вот беда, подгрузка не выполняется, а выводит выше предоставленные ошибки! Я понимаю, что это за ошибки но как этого избежать? И так js: //---Фильтр работ по дате $( "#date_filter input" ).datepicker({ dateFormat: 'dd.mm.yy', }); $('.filter').click(function(){ start = $('#in_filter').val(); finish = $('#out_filter').val(); if((start == '') && (finish == '')){ alert('Вы не выбрали дату!'); }else{ $.post("ajax.php", { filter_date: "date", in_filter: start, out_filter: finish }, onAjaxSuccess ); function onAjaxSuccess(data) { $('#work').load('ajax.php', {filter_date:"date"}); alert(data); } } }); //---Фильтр работ по дате А теперь PHP: <?php require $_SERVER['DOCUMENT_ROOT'].'/config.php'; $other = new Other; //Филтр по дате начала! if(isset($_POST['filter_date']) && $_POST['filter_date']=='date'){ $in_filter = $_POST['in_filter']; $out_filter = $_POST['out_filter']; if(($in_filter != '') && ($out_filter == '')){ $q = mysql_query("SELECT * FROM work WHERE datestart >= '".$in_filter."'");} elseif(($in_filter == '') && ($out_filter != '')){ $q = mysql_query("SELECT * FROM work WHERE datestart <= '".$out_filter."'");} elseif(($in_filter != '') && ($out_filter != '')){ $q = mysql_query("SELECT * FROM work WHERE datestart >= '".$in_filter."' AND datestart <= '".$out_filter."'");} while($row = mysql_fetch_assoc($q)){ ?> <tr> <td><?=$row['id']?></td> <td><?=$row['name']?></td> <td><?=$row['stage']?></td> <td><?=$row['plot']?></td> <td><?=$row['face']?></td> <td><?=$row['datestart']?></td> <td><?=$row['datefinish']?></td> <td><input type="checkbox" name="work[]" value="<?=$row['id']?>"></td> </tr> <? } } |
Вам же английским языком написали
Undefined index: in_filter нет такого индекса в посте |
Ну вот же оно:
if(isset($_POST['filter_date']) && $_POST['filter_date']=='date'){ $in_filter = $_POST['in_filter']; Это называется: а и б сидели на трубе, а курило, б дымило, что др....ло на трубе? Следующие строки сообщений сервера попросту вытекают из первого после которого скрипт продолжает молотить себе по яйцам, потому что нет нигде проверок на ошибку и нет эксепшнов. |
ПО ходу ведения
Чтобы не маятся с массивом, при условии нежирных зависимостей, пишите кложу в которой раскидываете массив на обычные переменные. $save_req = function() use($config) { extract($_POST); // все что там есть - высыпалось идентификаторами if(isset($in_filter, $out_filter, get_filter, $set_filter, take_filter, $bring_filter) { // blah-blah-blah } }; да иссет как и унсет принимает список аргументов и нул для него - не сет. Пустые строки запросам не страшны. ПРосто ничего не найдется. ЗЫ Без кложи (которая для защиты namespace) можно юзать префикс в экстракте или натурально namespace |
Народ, да это я в курсе, но вы логику понять можете, что когда выполняется эта строка
$('#work').load('ajax.php', {filter_date:"date"});то это не работает if(isset($_POST['filter_date']) && $_POST['filter_date']=='date'){ $in_filter = $_POST['in_filter']; |
Вы сначала провереку поставьте и направляйте в алерт причинный текст заголовка (который ежу понятно надо прописать) и тогда найдете что где отвалилось и вообще ваш ява-скрипт ничтожен. Проверять все надо на сервере. Любой дятел в лесу отгрузит вам что хочет из консоли или плагина.
$('#work').load('ajax.php', {filter_date:"date"}); По этому поводу ничего не могу посоветовать, потому что смысла криптографии не улавливаю. |
Цитата:
Я не понимаю что в терминах аякса и тем более живерного является successful элементом, но, если вот тут 14 in_filter: start, у вас null, или там undefined, или false - то в посте in_filter не будет ВООБЩЕ как такового. Почитайте что такое successful элемент form-data |
Цитата:
|
В форме:
<input type="checkbox" name="checkbox"/> чек бокс не нажат, форма отправлена. Будет в $_POST элемент 'checkbox'? Нет. И это хорошо. Нет checkbox значит НЕ нажат. А чтобы это понять надо проверить if(isset($_POST['checkbox']))// А вы не проверяете. Ы: Нажал я таки ссылку и что же - там туча этих самых чекбоксов которые я взял для примера как самый типичный глюк программистов не знакомых с глюкавостью веба. Если чекбокс не нажат на сервер никакого FALSE, или 0, или NULL не придет. Ничего не придет и все. Исходя из заведомости знания что должно прийти можно сделать вывод что было, а что не было нажато. |
Часовой пояс GMT +3, время: 22:28. |