Форум программистов, компьютерный форум, киберфорум
Python: Django
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
5 / 5 / 0
Регистрация: 25.09.2017
Сообщений: 569

Не производится нужный запрос при выполнении ajax

01.05.2022, 11:29. Показов 891. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Есть условный контроллер, который поддерживает методы GET, PUT.

Python
1
2
3
4
5
6
7
8
9
10
class SomeView(APIView):
 
    permission_classes = [rest_perm.IsAuthenticated]
 
    def get(self, request, *args, **kwargs):
           '''
           '''
    def put(self, request, *args, **kwargs):
           '''
           '''
Детали реализации пока опущу, показал самые важные. При этом библиотека requests может делать запросы PUT, но непосредственно из шаблона не получается отправить форму. Запросы делаю через ajax:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$.ajax({
            type: 'PUT',
            data: data,
            dataType: 'json',
            url: window.location.href,
            beforeSend: function(xhr){
                console.log('token', xhr.getRequestHeader('Authorization'));
                xhr.setRequestHeader('X-CSRFToken', '{{ csrf_token }}');
                xhr.setRequestHeader('Authorization', xhr.getRequestHeader('Authorization'))
            },
            success: function(response, status){
                console.log('response', response)
            },
            error: function(){
                console.log(arguments)
            }
        })
Запрос идёт на тот же адрес, только PUT, в итоге при выполнении ajax запроса, в терминале идёт GET запрос, а не PUT. Ни консоль, ни терминал никаких ошибок не выдаёт. Запрос успешен. При этом к адресу добавляются параметры (из отправляемых данных на PUT запрос)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.05.2022, 11:29
Ответы с готовыми решениями:

При выполнении $.ajax перезагружается страница
Подскажите пажалуйста почему перезагружается страница? Мысль такая что результат запроса добавляется в <div...

Анимация при выполнении ajax запроса
Ребят помогите как-нибудь анимировать красиво удаление и добавление объектов в теле запроса $('.next').on('click',function(e){ ...

Php, запрос при выполнении
Приветствую, есть mysql запрос в php: if (Isset($_POST)){ $Name = $_POST; $query = "DELETE FROM {$table_eq} WHERE...

6
243 / 178 / 73
Регистрация: 17.10.2018
Сообщений: 749
01.05.2022, 13:46
Ajax из формы срабатывает?
1
5 / 5 / 0
Регистрация: 25.09.2017
Сообщений: 569
01.05.2022, 18:59  [ТС]
Цитата Сообщение от Lekks Посмотреть сообщение
Ajax из формы срабатывает?
Здравствуйте! В консоли ничего такого не выводится, если бы запрос был успешен или не успешен, значит, судя по всему, не срабатывает.


HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<form id='updatePhoneGroup'>
 
     <div>
          <div id='id_groupName'>
              <input id='' name='name' value='someName' type='text'></input>
          </div>
     </div>
 
     <section class='container'> 
         <div>
             <select id='leftItems' multiple>
                 <option></option>
                 <!--...-->
             </select>
         </div>
     
    
         <div id='selected'>
              <select id='rightItems' name='phone_set' multiple>
                   <option selected id='someId' value='someId'>VALUE</option>
              </select>
         </div>
     </section>
 
    <button type='submit'>ОТПРАВИТЬ</button>
</form>

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
$('#updatePhoneGroup').on('submit', function(event){
        $('#rightItems option').prop('selected', true);
 
 
        //получаю данные:
        data = $('updatePhoneGroup').serialize();
        //ajax:
 
         $.ajax({
              type: 'PUT',
              data: data,
              dataType: 'json',
              url: window.location.href,
              beforeSend: function(xhr){
                  console.log('token', xhr.getRequestHeader('Authorization'));
                  xhr.setRequestHeader('X-CSRFToken', '{{ csrf_token }}');
                  xhr.setRequestHeader('Authorization', xhr.getRequestHeader('Authorization'))
              },
              success: function(response, status){
                  console.log('response', response)
              },
              error: function(){
                  console.log(arguments)
              }
        })
})
0
243 / 178 / 73
Регистрация: 17.10.2018
Сообщений: 749
01.05.2022, 19:22
Цитата Сообщение от Alex_py Посмотреть сообщение
В консоли ничего такого не выводится,
Ну я собственно не про это спрашивал - а про то, запускается ли он из формы или как-то с кнопки. В общем, html-формы не поддерживают запросы, отличные от GET и POST.

Способы решения, например:

https://stackoverflow.com/ques... b-browsers
1
5 / 5 / 0
Регистрация: 25.09.2017
Сообщений: 569
01.05.2022, 20:13  [ТС]
Цитата Сообщение от Lekks Посмотреть сообщение
Ну я собственно не про это спрашивал - а про то, запускается ли он из формы или как-то с кнопки. В общем, html-формы не поддерживают запросы, отличные от GET и POST.
Способы решения, например:
Событие привязал по нажатию на кнопку submit , ничего особенного и в обработчике же реализован запуск ajax.

Вспомнил, что отправлял другую форму в другом шаблоне и там всё обрабатывалось, put-запрос, здесь непонятно...

Хотел попробовать с другой формой снова, но заголовок получить теперь не могу...

JavaScript
1
xhr.setRequestHeader('Authorization', xhr.getRequestHeader('Authorization'))
JavaScript
1
Uncaught TypeError: xhr.getRequestHeader is not a function
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
01.05.2022, 21:14
Лучший ответ Сообщение было отмечено Alex_py как решение

Решение

Цитата Сообщение от Lekks Посмотреть сообщение
В общем, html-формы не поддерживают запросы, отличные от GET и POST.
Привет! Думаю, поддержка PUT в формах тут не играет роли, автор не отправляет форму нативными методами:
Цитата Сообщение от Alex_py Посмотреть сообщение
Запросы делаю через ajax:
- в скрипте не обрывается нативная обработка (preventDefault), и поэтому "в терминале идёт GET запрос"
- проверьте, что в data, возможно, data = $('updatePhoneGroup').serialize(); - это не то, что вам нужно?

Чтобы не быть голословным, проверил у себя:

Запрос из формы ушел с методом PUT, на сервере получен
127.0.0.1 - - [01/May/2022 15:15:39] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [01/May/2022 15:15:43] "PUT / HTTP/1.1" 200 -

и отвечен json-ом вида (это у меня на сервере реализовано)
{'result': 'success', 'data': data}

где data - это то, что пришло на сервер от клиента

В консоли при этом:
1
5 / 5 / 0
Регистрация: 25.09.2017
Сообщений: 569
02.05.2022, 14:37  [ТС]
Цитата Сообщение от Jabbson Посмотреть сообщение
в скрипте не обрывается нативная обработка (preventDefault), и поэтому "в терминале идёт GET запрос"
Да Вы правы. Спасибо))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.05.2022, 14:37
Помогаю со студенческими работами здесь

AJAX запрос к файлу, который сам делает AJAX запрос
Прошу прощение за название темы, но я не знаю как это коротко описать... Здравствуйте. На странице HTML я обращаюсь к файлу PHP: ...

При выполнении JavaScript-функции отправить запрос на сервер
Суть в том, что по кнопке в форме вызывается JavaScript-функция, которая выполняет некоторые действия по обновлению на странице, но помимо...

Запрос параметра при выполнении запроса с вычисляемым полем
Здравствуйте. Есть 2 таблицы в бд на аксесс 2013: 1)НазначенияСотрудникам(код-счетчик ключевое,сотрудник-целое число,документ-целое...

Перезагрузка элемент Table при успешной выполнении JqueryAjax запрос
Хочу сделать тек, чтобы после успешной выполнении JqueryAjax запрос перезагрузить таблицу(Например таблица с идентификатором...

Sql запрос выполняется через SSMS, но падает при выполнении из кода C#
Не могу понять причину. Выпадает SqlException, но в нём нет текста ошибки. Просто пустая строка в Message. Версия сервера SqlServer...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru