Не отправляются данные через AJAX POSTом
Есть несколько форм с уникальными ID. В каждой форме есть скрытый INPUT инициализирующий PHP функцию.
<form class='id' id="form_act" ction="/options/CORE.Executive.file.Admin.php" method="post"> <input type="text" name="name" placeholder="имя" required /> <input type="text" name="phone" placeholder="телефон" required /> <input type="hidden" name="funNAME" value="Act"> <button onclick="act()">Отправить</button> </form> Написан AJAX функция отлавливающая событие onclick по button в конкретной форме, и отправляющая запрос на указанную страницу. $(document).ready(function() { $(this).submit(function() { var soc = '#'+($(this).find('form.id').attr('id')); $.ajax({ type: $(soc).attr('method'), url: $(soc).attr('action'), data: $(soc).serialize(), dataFilter: function(){ location.reload(true); } }) return false; }); }); if ($_POST['funNAME']) { $fladmin -> File_great('index1s.php', 'текст для вставки в файл', 'w'); } Ну никак не хочет отрабатывать. Форумчане, есть идеи? :) |
<button onclick="act()">Отправить</button> а это зачем?
$('form.id').submit(function(e) { e.prevetDefault(); $.ajax({ type: this.method, url: this.action, data: $(this).serialize(), dataFilter: function(){ location.reload(true); } }) }); |
Цитата:
А по теме, ну ни как не хочет работать представленный вами вариант, делает редирект на страницу функции. К слову все работает в таком варианте: <form id="form_act" ction="/options/CORE.Executive.file.Admin.php" method="post"> <input type="text" name="name" placeholder="имя" required /> <input type="text" name="phone" placeholder="телефон" required /> <input type="hidden" name="funNAME" value="Act"> <button>Отправить</button> </form> $(document).ready(function() { $('#form_act').submit(function(e) { e.preventDefault(); $.ajax({ type: 'post', url: $('#form_act').action, data: $('#form_act').serialize(), dataFilter: function(){ location.reload(true); } }) }); }); if ($_POST['funNAME']) { $fladmin -> File_great('index1s.php', 'текст для вставки в файл', 'w'); } Но мне крайне не хочется копипастить AJAX функцию для каждой формы :) |
Цитата:
e.preventDefault() |
Цитата:
Цитата:
А вот так - $('#form_act'), это обработчик для одной формы с уникальным идентификатором! Не используйте id как селектор, используйте классы как было показано и все будет работать. |
Цитата:
|
Цитата:
success: function(data) {}. |
Делаю так:
HTML KOД <form class='className' action="/options/file.php" method="POST"> <input type="text" name="name" placeholder="Ваше имя" required /> <input type="text" name="phone" placeholder="Ваш телефон" required /> <input type="hidden" name="funsGet" value="Act"> <button>Отправить</button> </form> JS KOД $(document).ready(function() { $('form.className').submit(function(event) { event.preventDefault(); $.ajax({ type: $(this).method, url: $(this).action, data: $(this).serialize(), success: function() { location.reload(true); }, dataFilter: function(){ //location.reload(true); } }) }); }); PHP KOД if ($_POST['funsGet']) { $fladmin -> File_great('index1s.php', 'текст для вставки в файл', 'w'); } success успешно отрабатывает, намекая что скрипт выполнил отправку, но функция php не создает файл т.к. $_POST['funsGet'] не была инициализирована. Где накасячил, не пойму.:blink: |
type: $(this).method,
url: $(this).action, *** удалено модератором *** сколько раз можно объяснять, что this в обработчике, это DOM объект, форма текущая, а method и action ее свойства, которые получить вот так: type: this.method, url: this.action, зачем для этого напрягать JQ чтобы получить объект, который и так доступен? Цитата:
$fladmin -> File_great('index1s.php', 'текст для вставки в файл', 'w'); - заменить на exit("Yes");, а в success: function(data) { alert(data); } тогда точно можно удостовериться, что сервер получил и ответил. И если ответил, то проблемы в $fladmin -> File_great('index1s.php'.... Вот только писать в РНР файл, который есть исполняемый на сервере, данные от клиента, это даже не дыра, это дырища с большие ворота. |
Цитата:
|
Часовой пояс GMT +3, время: 01:00. |