- JQuery AJAX пост не работает
- Решение
- $ POST не работает в форме отправки ajax?
- 11 ответов
- Почему не работает jQuery post?
- Почему POST параметры ajax запроса не приходят к серверу?
- Почему не работает post запрос через ajax?
- 2 ответа 2
- Всё ещё ищете ответ? Посмотрите другие вопросы с метками javascript php jquery ajax или задайте свой вопрос.
- Похожие
- Подписаться на ленту
JQuery AJAX пост не работает
Я прочитал много сообщений по этому вопросу, но я не могу решить проблему.
Кажется, что ajax () работает нормально, но .php файл не может обновить базу данных SQL и не возвращает результатов функции ajax ().
PHP-код работает, я попробую.
это код:
Решение
Код jQuery отправляет данные POST в виде строки JSON, но ваш код PHP ищет стандартные пары ключ-значение.
Вы можете изменить вызов Ajax для отправки в формате ключ-значение. Я не вижу что utnew ссылается в вашем коде, обычно это будет объект Javascript или результат сериализации HTML-формы с $.serialize() :
Или вы можете изменить сторону PHP, чтобы ожидать JSON-кодированную строку в полезной нагрузке POST, а не кодированные пары ключ-значение:
Независимо от того, что вы выберете, проблема, с которой вы сталкиваетесь, — это вызов Ajax, отправляющий строку в кодировке JSON в качестве полезной нагрузки POST, но PHP ожидает пары ключ-значение $_POST ,
«json» аргумент типа данных для jQuery $.ajax или ярлык метод $.post сообщает jQuery, в каком формате ожидать возвращаемое значение, поэтому ваш код PHP должен возвращать строку в кодировке JSON. Ваш PHP-код отправляет обратно простую строку, поэтому вы должны либо сказать jQuery, что ожидать:
$.post(url, data, «text»)
или PHP должен отправить обратно правильный JSON-кодированный объект:
echo json_encode([«result» => «success»]);
Если у вас есть ошибка входа в PHP (вы должны) в файл, вы можете отладить конечную точку API с помощью error_log т.е. error_log(print_r($_POST,1)); дал бы вам несколько подсказок.
Источник
$ POST не работает в форме отправки ajax?
когда я пытаюсь проверить имя ввода пользователя уже существует с помощью формы ajax submit !Но это только Undefined index: username на sessions.php ,чего не хватает ?
11 ответов
есть несколько проблем с вашим кодом, например:
. он получает только неопределенный индекс: имя пользователя в сеансах.в PHP
проблема заключается в следующих двух строках,
contentType (по умолчанию: ‘application/x-www-form-urlencoded; charset=UTF-8’ )
Тип: Boolean или String
При отправке данных на сервер используйте это содержимое тип. По умолчанию используется «application / x-www-form-urlencoded; charset=UTF-8», что в большинстве случаев нормально. Если вы явно передаете тип содержимого в $.ajax() , тогда он всегда отправляется на сервер (даже если данные не отправляются). По состоянию на jQuery 1.6 вы можете пройти false чтобы сказать jQuery не устанавливать заголовок типа контента.
processData (по умолчанию: true )
Тип: Boolean
По умолчанию данные передаются в параметр данных как объект (технически, что-либо, кроме строки) будет обработан и преобразован в строку запроса, соответствующую по умолчанию тип контента «application / x-www-form-urlencoded». Если вы хотите отправить DOMDocument или другие необработанные данные, установите этот параметр в false .
отсюда $_POST массив будет пуст в сеансы.в PHP страница если установить contentType и processData to false , и именно поэтому вы получаете это неопределенный индекс: username ошибка. Но, сказав это, поскольку вы отправляете файл с запросом AJAX, можно установить эти параметры как false , который также объясняется в следующем пункте.
.serialize() метод создает текстовую строку в кодировке URL путем сериализации значений элемента управления формы, таких как ,
и . Однако он не включает поле ввода файла при сериализации формы и, следовательно, ваш удаленный обработчик AJAX не получит файл вообще. Поэтому, если вы загружаете файл через AJAX, используйте виде FormData
если вы устанавливаете contentType to false, заголовок ajax не отправляется, в результате если вы отправляете somehing type:POST заголовок не содержит ваших данных, поэтому сервер не может его видеть. Если вы используете GET чтобы сделать это, он будет работать, потому что данные переданы с GET (после url) не в заголовке.
просто удалить contentType
(по умолчанию: ‘application / x-www-form-urlencoded; charset=UTF-8’)
Type: Boolean или String при отправке данных в сервер, используйте этот тип контента. По умолчанию «application/x-www-form-urlencoded; charset=UTF-8″, который отлично подходит для большинство случаев. Если вы явно передаете тип содержимого в $.»Аякс» (), то он всегда отправляется на сервер (даже если данные не отправляются). Как jQuery 1.6 вы можете пройти false чтобы сказать jQuery, чтобы не устанавливать контент заголовок тип. Примечание: спецификация W3C XMLHttpRequest диктует что кодировка всегда UTF-8; указание другой кодировки не будет принудительным браузер для изменения кодировки. Примечание: для междоменных запросов, установка типа контента на что угодно, кроме application/x-www-form-urlencoded, multipart / form-data, or text/plain вызовет браузер для отправки запроса параметров preflight в сервер.
processData используется для отправки данных, а это — документация Ajax
по умолчанию запросы Ajax отправляются с помощью метода GET HTTP. Если Требуется метод POST, этот метод можно указать, установив значение параметра тип. Этот параметр влияет на то, как содержимое данные отправляются на сервер. Данные POST всегда будут передается на сервер с помощью кодировки UTF-8, на W3C Стандарт XMLHTTPRequest.
Источник
Почему не работает jQuery post?
В консоле пусто
При редиректе
Notice: Undefined index: name in C:\xampp\htdocs\test\test.php on line 3
Notice: Undefined index: time in C:\xampp\htdocs\test\test.php on line 4
HAbRAhabp:
В консоле пусто
При редиректе
Notice: Undefined index: name in C:\xampp\htdocs\test\test.php on line 3
Notice: Undefined index: time in C:\xampp\htdocs\test\test.php on line 4
Как я понял, ТС хочет перейти на страницу /test.php с параметрами, что передает в ajax. Потом, с помощью css селектора jQuery выбирает location и меняет ему атрибут href 😀
Правильнее будет создать форму и сделать ее сабмит. Вот так:
POST не успевает отработать.
Все команды выполняются одна за одной, не ожидая выполнения предыдущей.
Если Вам нужно сделать редирект после успешного POST сделайте так:
Так редирект выполнится только в случае успешного выполнения запроса.
Срабатывает ли вызов функции? Например , вот так :
‘hi!’ выводится в консоли?
если да, то в этой же консоли смотрите отправляется ли запрос. Если да, то что появляется в консоли после отправки запроса? В общем, консоль вам все покажет )))
Источник
Почему POST параметры ajax запроса не приходят к серверу?
При отправке данных на сервер AJAX методом JQuery с типом POST
данные на сервер не приходят.
Если же меняем на GET, то все ок.
Подскажите, пожалуйста, в чем может быть проблема?
Задачу решил заменой конструкции выше на
- Вопрос задан более трёх лет назад
- 5572 просмотра
как писали уже выше, в data необходимо передавать объект.
А jQuery.serialize() делает GET-параметры, от того GET запрос в вашем примере прекрасно отработает.
Если вам лень разбираться что и как, предлагаю такой код:
и в ваш аякс запрос data передавать request вместо str
idclev31: GET уходит скорее потому что браузер долбится в url: «/?action=register&do=auth» на ваш UI а не бэкэнд непосредственно.
так что проверьте по какой урле вам надо долбится на POST.
И в случае удаления url — и отправке пост запроса, POST параметры должны присутствовать, иначе я уже 3 года отправлял бы пустые параметры, если бы этот метод не работал)
Я не спорю, в этом случае они присутствуют, конечно)
Но, не очень понимаю насчет того, почему уходит GET
Дело в том, что отправлять запрос прямо на определенный адрес к файлу я не могу, в силу ранее написанных не мной вещей, соответственно, надо как-то передать эти GET параметры в данном POST запросе.
Источник
Почему не работает post запрос через ajax?
Почему не работает post запрос через ajax?
Всё происходит на Denwer, JQuеry подключен:
2 ответа 2
Вы неправильно обращаетесь к элементу массива. Значение flag нужно взять в кавычки, так как $_POST это ассоциативный массив, где flag — это ключ. Это что относится к вашему коду.
Чтобы увидеть, что находится в массиве $_POST , перед if напишите
Во первых. То что сказал уважаемый @Swartex. Во вторых передавать надо переменную с именем.
Затем уже сможем ее поймать как $_POST[‘flag’] А если уж вы передаете json — то мне всегда казалось что надо сначала делать json_decode , и только потом с этими данными работать
Всё ещё ищете ответ? Посмотрите другие вопросы с метками javascript php jquery ajax или задайте свой вопрос.
Похожие
Подписаться на ленту
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
дизайн сайта / логотип © 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.10.15.40479
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Источник