PHP ve tanımsız için açısal HTTP post
Etiketi ng-submit="login()
ile bir form var
İşlevi javascript ince çağrılır.
function LoginForm($scope, $http)
{
$http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
$scope.email = "fsdg@sdf.com";
$scope.password = "1234";
$scope.login = function()
{
data = {
'email' : $scope.email,
'password' : $scope.password
};
$http.post('resources/curl.php', data)
.success(function(data, status, headers, config)
{
console.log(status ' - ' data);
})
.error(function(data, status, headers, config)
{
console.log('error');
});
}
}
PHP dosyasından geri 200 OK yanıt alıyorum, ancak, döndürülen verileri email
password
tanımsız olduğunu söylüyor. Bu Sahip olduğum tüm php
<?php
$email = $_POST['email'];
$pass = $_POST['password'];
echo $email;
?>
POST
tanımsız değerler alıyorum neden herhangi bir fikir?
CEVAP
.post()
varsayılanları application/json
İçerik türü Başlığı angularjs. Bu form ile kodlanmış veri, ancak data
değeri uygun bir sorgu dizesi geçmek değiştirmiyorsunuz geçirmek için geçersiz kılma, PHP beklediğiniz gibi $_POST
doldurma değildir.
Benim önerim sadece application/json
angularjs varsayılan ayar olarak başlık kullanımı, PHP çiğ girdi okuyun ve JSON serisini olacaktır.
Bu gibi PHP ile elde edilebilir:
$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
$email = $request->email;
$pass = $request->password;
Eğer ağır $_POST
işlevsellik kalınır alternatif olarak, email=someemail@email.com&password=somepassword
gibi bir sorgu dizesi form ve veri olarak gönderebilirsiniz. Bu sorgu dizesi URL kodlanmış olduğundan emin olun. Eğer elle jQuery.serialize()
gibi bir şey kullanarak karşıt olarak) yerleşik, Javascript encodeURIComponent()
sizin için hile yapmak gerekir.
bir HTTP POST isteği gerçekleştirmek i...
Nasıl Excel VBA kullanarak bir sunucu ...
AngularJS - $http için Herhangi bir yo...
Nasıl açısal-uı'nin önerileri sun...
Etkinleştir ASP.NET ASMX HTTP POST / G...