jQuery AJAX / POST не отправляет данные на PHP

Поэтому у меня есть эта проблема какое-то время, и я знаю, что на эту тему есть бесчисленные вопросы, поверьте, я пробовал все возможные решения, но все равно не работает.

Это самый простой пример, который в моем случае не работает

JQuery:

$.ajax({ url: "ajax/add-user.php", type: "POST", data: {name: 'John'}, success: function(data){ console.log(data); } }); 

PHP

 echo json_encode($_POST); 

Вот и все. Я всегда возвращаю пустой массив в качестве ответа. Я попытался с serialize() для data: но ответ всегда пуст. Я не получаю никаких ошибок, просто пустой массив, когда я должен получить опубликованные значения.

Если, например, в php я пытаюсь echo некоторые жестко закодированные переменные, я их получаю, но $_POST и $_GET не работают.

Любое решение или методы, как я могу определить проблему?

Спасибо.

EDIT / РЕШЕНИЕ

Итак, похоже, проблема связана с .htaccess, который переписывает URL-адрес и удаляет расширение. На вкладке сети действительно запрос был перемещен навсегда. Удаление расширения .php из URL-адреса ajax: решил его. Спасибо и жаль, что тратили время. ура

вам нужно установить тип данных как json в ajax-вызове

КОД JQUERY:

 $.ajax({ url: "ajax/add-user.php", type: "POST", dataType:'json', data: {name: 'John'}, success: function(data){ console.log(data); } }); 

в то же время проверьте на своем скрипте, обновляется ли заголовок, чтобы принимать данные json .

PHP-код:

/** * Send as JSON */ header("Content-Type: application/json", true);

Счастливое кодирование:

Недавно я столкнулся с этой проблемой, но по другим причинам:

  1. Мои данные POST были перенаправлены как 301
  2. Мой запрос на сервер был GET
  3. Я не получил данные POST

Моя причина – у меня был URL-адрес на сервере, зарегистрированный как:

 http://mywebsite.com/folder/path/to/service/ 

Но мой клиент звонил:

 http://mywebsite.com/folder/path/to/service 

.htaccess на сервере читает это как перенаправление 301 GET на правильный URL-адрес и удаляет данные POST. Простым решением было дважды проверить URL-адрес .

@ C.Ovidiu, @MarcB – Вы оба, ребята, спасли мне много часов в отладке!

У меня была такая же проблема, и проблема оказалась одной из моих переменных в объекте data была определена. По какой-то причине это предотвратило отправку почтовых данных. Установка переменной для чего-то другого, кроме неопределенного, устраняет проблему.

Почему бы не использовать jQuery.post ?

 $.post("ajax/add-user.php", {name: 'John'}, function(response){ console.log(response); } ); 

Затем на вашем PHP вы можете сохранить вход так:

 if(isset($_POST["name"])) { $name= $_POST["name"]; file_put_contents("name.txt", $name) header('HTTP/1.1 200 OK'); } else { header('HTTP/1.1 500 Internal Server Error'); } exit; 

Попробуйте изменить код и использовать:

 $.ajax({url: 'ajax/add-user.php', type: 'POST', data: {name: 'John'}, dataType: 'html', success: function(data){ alert("success"); console.log(data); },error: function (xhr, ajaxOptions, thrownError) {alert("ERROR:" + xhr.responseText+" - "+thrownError);} }); 

(так что вы получите предупреждение об ошибке и успешности, убедитесь, что html, что вы получаете. Дополнительные параметры помогут вам точно настроить ваши аякс-вызовы. Позже сыграйте с async true / false)

также запустите свою программу ajax / add-user.php в новом окне (введите url) и посмотрите, что она вызывает. Извлеките программу и заставите вас что-то повторить «то есть легендарный мир привет» и посмотреть, получит ли ваш ajax сообщение ,

Удачи.