Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 02.04.2019
Сообщений: 36
1

Ошибка в ajax-запросе

06.04.2019, 15:54. Показов 1672. Ответов 47
Метки ajax, php (Все метки)

Author24 — интернет-сервис помощи студентам
Файл printer.php, который вносит апдейт в бд.

PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
require_once('db.php');
if(isset($_POST['printer']))
{
    global $link;
    $form_id = (int)$_POST['form_id'];
    $adress_register = strip_tags(trim($_POST['adress_register']));
    $SQL = "UPDATE Users SET adress_register='$adress_register' WHERE id='$form_id'";
    $result = mysqli_query($link, $SQL);
  }
?>
Ajax, который отправляет к нему данные из формы:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$('button[name="printer"]').on('click', function() {
    let $btn = $(this);   
    let id = $btn.closest('input').find('input[name="form_id"]').val(); // получаем id
    let adress = $btn.closest('input').find('input[name="adress_register"]').val(); // получаем адрес с инпута
    // формируем данные
    let data = {
        form_id: id,
        adress_register: adress,
    };
    $.ajax({
        type: "POST",
        url: "printer.php",
        data: data,
    }).done(function() {
        alert("Данные сохранены");
    });
    return false;
});
Сама форма:

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<form name="printer" method="post" action="printer.php">
<table border="0">
   <input type="hidden" name="form_id" value="<?=$users['id']?>">
   <tr><td>Имя</td><td><?=htmlspecialchars($users['name'], ENT_QUOTES)?></td></tr>
   <tr><td>Фамилия</td><td><?=htmlspecialchars($users['surname'], ENT_QUOTES)?></td></tr>
   <tr><td>Отчество</td><td><?=htmlspecialchars($users['second_name'], ENT_QUOTES)?></td></tr>
   <tr><td>Телефон</td><td><?=htmlspecialchars($users['phone'], ENT_QUOTES)?></td></tr>
   <tr><td>Дата рождения</td><td><?=htmlspecialchars($users['birth_date'], ENT_QUOTES)?></td></tr>     
   <tr><td>Адрес</td><td><input class="form-control" type="text" name="adress_register" value="<?=htmlspecialchars($users['adress_register'], ENT_QUOTES)?>"</td></tr>
   <tr><td>Комментарий</td><td><?=htmlspecialchars($users['comment'], ENT_QUOTES)?></td></tr>
   <tr><td>Сумма</td><td><?=htmlspecialchars($users['sum'], ENT_QUOTES)?></td></tr>
   <td><button type="submit" formmethod="post" name="printer" class="btn btn-xs btn-warning mb-3">Сохранить</button></td>
</table>
 </body>
</form>
Без ajax всё работает - данные заносятся в бд. С Ajax - только алерт выскакивает.

Добавлено через 8 минут
Памагити
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.04.2019, 15:54
Ответы с готовыми решениями:

Ошибка в AJAX запросе
Здравствуйте ! Есть форма которую мне нужно обработать с помощью ajax. У меня есть код который...

Ошибка при запросе Ajax
Есть форма: &lt;form method='POST' id='forms' action='javascript:void(null);' onsubmit='call()'&gt;...

Ожидание в AJAX запросе
Добрый день. Хочу сделать чтобы после заполнения формы и нажатия sumbit внизу всплывал текст &quot;Идет...

Изменить referer в ajax запросе
function get_post() { $.ajax({ type: &quot;GET&quot;, url:...

47
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
06.04.2019, 16:19 2
web2k99, $btn.closest('input') - говорит, что нужно найти ближайший родительский элемент <input> у кнопки $btn. Как вы себе это представляете, а особенно с учетом вашей разметки?
Javascript
1
2
3
4
5
6
7
8
9
10
11
$('button[name="printer"]').on('click', function(e) {
  e.preventDefault();
  $.ajax({
    type: "POST",
    url: "printer.php",
    data: $(this).closest('form').serialize(),
    success: function() {
      alert("Данные сохранены");
    }
  });
});
0
0 / 0 / 0
Регистрация: 02.04.2019
Сообщений: 36
06.04.2019, 16:23  [ТС] 3
Цитата Сообщение от Lazy_Den Посмотреть сообщение
$btn.closest('input') - говорит, что нужно найти ближайший родительский элемент <input> у кнопки $btn. Как вы себе это представляете, а особенно с учетом вашей разметки?
Вот я как раз насчёт этого и сомневался...
В ваш код мне нужно что-то добавить или что-то в нём поменять? т.к. он не сработал)
0
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
06.04.2019, 16:29 4
Цитата Сообщение от web2k99 Посмотреть сообщение
В ваш код мне нужно что-то добавить или что-то в нём поменять?
Для начала, нужно заглянуть в консоль, т.к. возможно, что есть какие-то ошибки. Во-вторых, нужно убедиться в том, что данные "доходят до пункта назначения". т.е. проверить путь к файлу printer.php.
0
0 / 0 / 0
Регистрация: 02.04.2019
Сообщений: 36
06.04.2019, 16:35  [ТС] 5
Цитата Сообщение от Lazy_Den Посмотреть сообщение
Для начала, нужно заглянуть в консоль, т.к. возможно, что есть какие-то ошибки. Во-вторых, нужно убедиться в том, что данные "доходят до пункта назначения". т.е. проверить путь к файлу printer.php.
В консоли выходит только "[Violation] 'load' handler took 2410ms".
Путь к файлу корректный, и если убрать ajax, оставить только printer.php, то данные вносятся в бд корректно.
0
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
06.04.2019, 16:37 6
web2k99, добавьте в файл printer.php в самом начале следующую строку:
PHP
1
file_put_contents('test_ajax.txt', var_export($_POST, 1));
Выполните запрос ajax-ом и после этого откройте файл test_ajax.txt. Что вы там видите?
0
0 / 0 / 0
Регистрация: 02.04.2019
Сообщений: 36
06.04.2019, 16:40  [ТС] 7
Цитата Сообщение от Lazy_Den Посмотреть сообщение
Выполните запрос ajax-ом и после этого откройте файл test_ajax.txt. Что вы там видите?
Я там вижу

array (
)
0
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
06.04.2019, 16:43 8
Цитата Сообщение от web2k99 Посмотреть сообщение
Я там вижу
Делаем вывод: данные не доходят. Опять откройте консоль, переключитесь в ней на закладку Network/Сеть, нажмите фильтр XHR. После этого, выполните запрос. Посмотрите статус запроса и передаваемые данные.
0
0 / 0 / 0
Регистрация: 02.04.2019
Сообщений: 36
06.04.2019, 16:45  [ТС] 9
Цитата Сообщение от Lazy_Den Посмотреть сообщение
Посмотрите статус и данные запроса.
Не могу ссылку оставить на скриншот.
Request Method: POST
Status Code: 200 OK
Remote Address: 178.208.83.21:80
Referrer Policy: no-referrer-when-downgrade
Connection: keep-alive
Content-Length: 0
Content-Type: text/html; charset=utf-8
Date: Sat, 06 Apr 2019 13:44:09 GMT
Keep-Alive: timeout=5
Server: nginx
X-Powered-By: PHP/7.1.21
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7
Connection: keep-alive
Content-Length: 0
Cookie: login=admin; password=admin
Host: baza-reg.site
0
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
06.04.2019, 16:50 10
web2k99, ссылка нам и не нужна. В первую очередь интересует статус запроса? Ну и сразу, как я уже говорил выше, можно проверить передаваемые данные.

Добавлено через 35 секунд
Цитата Сообщение от web2k99 Посмотреть сообщение
данные запроса
Данные я тут не вижу. Каким браузером пользуетесь?
0
0 / 0 / 0
Регистрация: 02.04.2019
Сообщений: 36
06.04.2019, 16:52  [ТС] 11
Цитата Сообщение от Lazy_Den Посмотреть сообщение
Каким браузером пользуетесь?
Chrome Версия 73.0.3683.86 (Официальная сборка), (64 бит)

Я просто правда не понимаю, в чём именно проблема, когда без ajax-a всё работает..
Попробовал в инспекторе firefox - там тоже в заголовках нет этих данные.
0
1931 / 1522 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
06.04.2019, 16:58 12
Цитата Сообщение от web2k99 Посмотреть сообщение
if(isset($_POST['printer']))
кнопка, не передается на сервер
0
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
06.04.2019, 16:59 13
Цитата Сообщение от web2k99 Посмотреть сообщение
Chrome
Данные можно увидеть ниже заголовков. Крутите вниз до "Form Data". Однако, меня смущает Content-Length: 0, если это из заголовка запроса, а не ответа.
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$('button[name="printer"]').on('click', function(e) {
  e.preventDefault();
  // Добавить временно вывод в консоль
  console.log($(this).closest('form').serialize());
 
  $.ajax({
    type: "POST",
    url: "printer.php",
    data: $(this).closest('form').serialize(),
    success: function() {
      alert("Данные сохранены");
    }
  });
});
Добавлено через 58 секунд
Цитата Сообщение от fanatikus Посмотреть сообщение
кнопка, не передается на сервер
Остальные данные всё равно должны были попасть при выводе в файл
0
1931 / 1522 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
06.04.2019, 17:03 14
Цитата Сообщение от Lazy_Den Посмотреть сообщение
Остальные данные всё равно должны были попасть при выводе в файл
остальные да, но запрос на добавления в базу не сработает
Миниатюры
Ошибка в ajax-запросе  
0
0 / 0 / 0
Регистрация: 02.04.2019
Сообщений: 36
06.04.2019, 17:03  [ТС] 15
Цитата Сообщение от Lazy_Den Посмотреть сообщение
Однако, меня смущает Content-Length: 0, если это из заголовка запроса, а не ответа.
Это и в запросе и в ответе.
Цитата Сообщение от Lazy_Den Посмотреть сообщение
$('button[name="printer"]').on('click', function(e) {
* e.preventDefault();
* // Добавить временно вывод в консоль
* console.log($(this).closest('form').serialize());
$.ajax({
* * type: "POST",
* * url: "printer.php",
* * data: $(this).closest('form').serialize(),
* * success: function() {
* * * alert("Данные сохранены");
* * }
* });
});
Увидел ошибку, что у меня не загрузился favicon.
И пустой user message для этого скрипта с ajax.
Цитата Сообщение от Lazy_Den Посмотреть сообщение
"Form Data"
Такого вообще нет
0
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
06.04.2019, 17:08 16
Цитата Сообщение от fanatikus Посмотреть сообщение
но запрос на добавления в базу не сработает
Согласен, на это так же надо обратить внимание.
Цитата Сообщение от web2k99 Посмотреть сообщение
Такого вообще нет
Вы хоть там смотрели? Скрин ниже.
И что консоль выводит console.log($(this).closest('form').serialize());?
Миниатюры
Ошибка в ajax-запросе  
0
1931 / 1522 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
06.04.2019, 17:12 17
Цитата Сообщение от Lazy_Den Посмотреть сообщение
$('button[name="printer"]').on('click', function(e) {
* e.preventDefault();
* $.ajax({
* * type: "POST",
* * url: "printer.php",
* * data: $(this).closest('form').serialize(),
* * success: function() {
* * * alert("Данные сохранены");
* * }
* });
});
этот код, прекрасно отрабатывает
изменить проверку в php и все будет ок
0
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
06.04.2019, 17:15 18
Цитата Сообщение от fanatikus Посмотреть сообщение
изменить проверку в php и все будет ок
Изменить нужно, но пока это проблему не решит, т.к.
Цитата Сообщение от Lazy_Den Посмотреть сообщение
добавьте в файл printer.php в самом начале следующую строку...
Что вы там видите?
Цитата Сообщение от web2k99 Посмотреть сообщение
Я там вижу
array (
)
0
0 / 0 / 0
Регистрация: 02.04.2019
Сообщений: 36
06.04.2019, 17:17  [ТС] 19
Цитата Сообщение от Lazy_Den Посмотреть сообщение
Вы хоть там смотрели? Скрин ниже.
Ошибка в ajax-запросе

Цитата Сообщение от Lazy_Den Посмотреть сообщение
И что консоль выводит c
Ошибка в ajax-запросе
0
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
06.04.2019, 17:25 20
web2k99, у вас кнопка точно внутри формы?
0
06.04.2019, 17:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.04.2019, 17:25
Помогаю со студенческими работами здесь

404 (Not Found) при ajax запросе
Добрый день! Не могу понять по какой причине некорректно отрабатывает ajax запрос. По клику по...

Выдает ошибку при ajax запросе
&lt;script src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js&quot;&gt;&lt;/script&gt; $.ajax({...

Не отрабатывает succes при ajax запросе
Добрый вечер. Подскажите почему может не работать выполнение функции после succes:...

Изменение url при ajax запросе
Добрый день, подскажите конструкцию работы того же mail.ru или gmail.com, когда нажимаешь на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru