Подтвердить что ты не робот

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 не работают.

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

Спасибо.

ИЗМЕНИТЬ/РЕШЕНИЕ

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

4b9b3361

Ответ 1

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

КОД JQUERY:

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

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

PHP CODE:

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

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

Ответ 2

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

  • Мои данные POST были перенаправлены как 301
  • Мой запрос на сервер был GET
  • Я не получил данные 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 - Вы оба, ребята, спасли мне много часов в отладке!

Ответ 3

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

Ответ 4

Почему бы не использовать 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;

Ответ 5

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

$.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. Дополнительные параметры помогут вам точно настроить ваши аякс-вызовы. Позже сыграйте с асинхронным значением true/false)

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

Удачи.