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: решил его. Спасибо и жаль, что тратили время. Приветствия
Ответы
Ответ 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) и посмотрите, что она эхо. Измените программу и заставите вас что-то повторить, то есть легендарный мир привет, и посмотрите, получите сообщение.
Удачи.