2015-12-09 2 views
1

Я пытаюсь отправить данные из моей ФОРМЫ ФОРМЫ для создания резервных копий на PHP с использованием метода POST.Угловая - отправьте данные HTTP-сообщения на сервер [КАК]

мой Угловой код выглядит следующим образом:

$scope.getToken = function(){ 
    // console.log $scope.login to make sure I'm not sending empty data 
    console.log($scope.login); 
    $http({ 
     method: 'POST', 
     url: '../../api/v1/Oauth.php', 
     data: { 'login' : $scope.login, 'password' : $scope.password } 
    }).then(function successCallback(response) { 
     console.log(response); 
    }, function errorCallback(response) { 
     console.log(response); 
    }); 
}; 

и после того, что я пытаюсь поймать его на моем PHP:

if((isset($_POST['login']) AND isset($_POST['password']))) 
{ 
    $username = $_POST['login']; 
    $password = $_POST['password']; 
    echo $username; 
} 
else 
    var_dump($_POST); 

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

Спасибо С наилучшими пожеланиями Andurit

+1

может вы откройте инструменты разработчика и изучите тело запроса. Это похоже на то, что вы ожидаете? – pQuestions123

+1

Вы имели в виду '' username ': $ scope.username' вместо '' login ': $ scope.login?' – Komo

+0

hey @Komo хорошая точка, в любом случае это должно по меньшей мере дамп данных в else statemenet, который не делает. Но спасибо, я отредактирую это (+ THUMB UP для вас) – Andurit

ответ

2

Используйте это:

json_decode(file_get_contents('php://input')); 

Проверьте вкладку сети в строке разработчиков. Вы можете видеть, что вы отправляете данные полезной нагрузки в тело http. Вот почему массив $ _POST пуст.

+2

Спасибо, человек, вот и все! – Andurit

+0

Ницца :-) Пожалуйста, отметьте ответ :-) – schellingerht

+1

Отмечено, просто ждал, пока он не позволит мне это сделать – Andurit

0

попробовать:

data: { login : $scope.login, password : $scope.password } 
+0

эй @ pQuestions123, к сожалению не работает. – Andurit

0
$http.post('url', {login: 'Alex', password: 'qwerty'}).then(function(){},function(){}); 
+0

если это не работает, найдите проблему на сервере. Небольшая рекомендация, для http create service/factory. –

2

Некоторой старая сторона сервера веб-библиотека ColdFusion/.NET/PHP имеет проблемы захватывая POST ТЕЛО по умолчанию (который, как $http отправляет данные).

Вы можете ссылаться на How to get body of a POST in php?, чтобы узнать, как написать свой PHP таким образом, чтобы он принял текущий и правильный стандарт отправки данных через сообщение.

Чтобы получить доступ к сущности тело POST или PUT запрос (или любой другой HTTP- метод):

$entityBody = file_get_contents('php://input'); 

Кроме того, константа STDIN это уже открыт поток в PHP // ввод, так вы можете сделать в качестве альтернативы:

$entityBody = stream_get_contents(STDIN); 
+1

Эй, @Sean Larking, я уже согласен с ответом на вопрос Генриса, как бы вы ни делали для этого объяснения :) – Andurit

Смежные вопросы