Я знаю, что это кажется слишком сложным, чтобы быть правдой, но я сбит с толку.
У меня есть страница, использующая метод публикации jQuery для отправки запроса AJAX POST в мой API. Они оба находятся в одном домене/сервере.
$.post('api/login.php', {username: 'test', password: 'test'}).done(function (res) {
alert(res.response);
});
API выглядит так:
<?php
exit (json_encode(array ('response' => print_r($_REQUEST, true))));
Это работает, как и ожидалось, в моей локальной настройке WAMP, но на Bluehost отображается просто Array ()
, как если бы в запросе не было параметров.
Если я изменю $.post
на $.get
, он отлично получит оба параметра.
Он также работает должным образом, если я использую HTML-форму и отправляю данные без использования AJAX, например.
<form method="post" action="api/login.php">
<input type="text" name="username" value="test">
<input type="text" name="password" value="test">
<input type="submit">
</form>
Я думаю, что исчерпал тесты, которые я могу создать, чтобы попытаться исключить любую другую возможность, и это просто сводится к чему-то действительно странному - мой PHP-скрипт не получает поля POST в запросе AJAX.
.done()
срабатывает, что означает, что он получил заголовок2xx
и ответ, который является допустимым объектом JSON. Никаких ошибок консоли, никаких предупреждений/журналов ошибок PHP, просто пустой запрос.... - person M Miller   schedule 11.08.2014$_REQUEST
может быть изменена в php.ini с помощью директивыrequest_order
. Попробуйте изменить сценарий на$_POST
вместо$_REQUEST
и посмотрите, сработает ли это. Я не знаю, поддерживает ли ваш хост пользовательские конфигурации php.ini. - person cOle2   schedule 11.08.2014$_POST
до$_REQUEST
. Я только что попробовал$_REQUEST
, чтобы проверить, работает ли версия$.get
. - person M Miller   schedule 11.08.2014echo json_encode(array('response' => $_POST));
- person adeneo   schedule 11.08.2014print_r($_POST);
? - person Sebastien   schedule 12.08.2014fail
с запросом ajax и посмотреть, выдает ли он - person adeneo   schedule 12.08.2014done
. Два эксклюзива. Я получаю ответ, в нем просто нет полей. - person M Miller   schedule 12.08.2014echo "hello"
и посмотрите, получится ли у вас это. - person adeneo   schedule 12.08.2014