Добрый день! На сайте есть несколько страниц:
| Код | <a href="#" value="add.php" class="submenu">Добавить договор</a> <a href="#" value="reestr.php" class="submenu">Реестр</a> <a href="#" value="nomenk.php?ca_type=1" class="submenu">Номенклатура</a> <a href="#" value="find.php" class="submenu">Поиск</a> <a href="#" value="provider.php" class="submenu">Поставщики</a>
|
*значение атрибута value содержит имя файла который необходимо загрузить с сервера.
Файлы загружаются с помощью пользовательской функции и следующего скрипта:
| Код | function getValue(p, url){ var value = ''; $.ajax({ url: url, type: "POST", async: false, data: p, cache: false, success: function(data){ value = data; } }); return value; }
$(document).ready(function(){ $("a.submenu").live('click', function(event){ $("a.submenu").removeClass("active"); $(this).addClass("active"); var file = $(this).attr("value"); $("#main").remove(); $(this).parent(".submenu").after("<div id=main>" + getValue('', "includes/" + file) + "</div>"); }); });
|
Здесь все работает, все ок.
допустим пользователь зашел и загрузил файл reestr.php в котором содержится вот такая форма html:
| Код | <tr> <td><input type="text" class="inp" size="30" name="ca_pay_nomer"></td> <td><input type="text" class="inp" size="30" name="ca_pay_data"></td> <td><input type="text" class="inp" size="30" name="ca_pay_summa"></td> <td><input type="text" class="inp" size="30" name="ca_pay_data_kassa"></td> <td><input type="text" class="inp" size="30" name="ca_pay_order"></td> <td><input type="submit" class="savenl" value="Сохранить" val="false" id_ca="196"></td> </tr>
|
и тут же есть вот такой скрипт:
| Код | $(".savenl").live('click',function(event){ var val = "&ca_pay_id=" + $(this).attr("val") + "&id_ca=" + $(this).attr("id_ca"); var value = $(this).parent().parent().find('.inp').serialize(); var result = getValue(value + val, "add_pay_exec.php"); if(result){alert(result);} });
|
т.е. пользователь ввел данные в поля формы, нажал кнопку submit и все данные ушли на сервер используя методы ajax в файл add_pay_exec.php в котором полученный запрос сохранился в mysql.
| Код | $db->dbquery("insert into ca_pay(ca_pay_nomer, ca_pay_data, ca_pay_data_kassa, ca_pay_order, id_ca, ca_pay_summa, id_org) values( '".$_POST['ca_pay_nomer']."', '".date('Y-m-d', strtotime($_POST['ca_pay_data']))."', '".date('Y-m-d', strtotime($_POST['ca_pay_data_kassa']))."', '".$_POST['ca_pay_order']."', '".$_POST['id_ca']."', '".$_POST['ca_pay_summa']."', '".$_SESSION['id_org']."' ) "); if($db->error){echo $db->error;} else{echo "Данные добавлены успешно!";}
|
Все работает как надо. Но вот какая проблема была замечена. Допустим пользователь загрузил первый раз страницу reestr.php внес какие то данные в форму нажал сохранить, потом он перешел на другую страницу что то там сделал и снова нажал на ссылку reestr.php, получается второй раз открыл эту страницу, снова ввел данные в поля формы и нажал сохранить то jquery уже два раза отправляет запрос на сервер в файл add_pay_exec.php и соответственно в mysql появляются две идентичные записи. Если третий раз зайдет на страницу reestr то и запрос будет отправлен три раза и соответственно в mysql уже три раза будет сохранены данные введенные в форму. Если взять полностью обновить браузер, то проблема исчезает, но начинает повторятся при повторной загрузке страницы.
Вот такая проблема. Прошу помочь, уверен что дело в мелочи и в моем слабом знании jquery :( Заранее всем спасибо. |