• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

AngularJS - Nie mogę odczytać danych(JSON) wysłanych metodą POST

0 głosów
688 wizyt
pytanie zadane 19 stycznia 2017 w JavaScript przez szustka124 Gaduła (4,380 p.)
edycja 19 stycznia 2017 przez szustka124

Witam

Nie mogę odczytać danych(JSON), wysłanych metodą POST. Odpowiedź odebrana pomyślnie. Wypisanie wysłanych danych zwraca wartość NULL

app.controller('login', function ($scope, $http) {
	
	$scope.submitLogin = function() {
		
		var data = JSON.stringify{
				'login': $scope.login, 
				'password': $scope.password
			});
		
		$http({
			method: 'POST',
			url: '/anyone/php/login.php',
			data: data,
			headers: {'Content-Type': 'application/json'}
		}).then(function(response) {
			
			console.log($scope.login);
			console.log($scope.password);
			
			$scope.output = response.data.text;
			
		}, function() {
			
		});
		
	};
	
});

 

Dane dekodowałem w ten sposób:

$postdata = file_get_contents('php://input');
$request = json_decode($postdata);
echo var_dump($request);

Jest trochę informacji w internecie, jednak żaden sposób nie działa.

Dziękuję za poświęcony czas i pozdrawiam

1 odpowiedź

0 głosów
odpowiedź 21 stycznia 2017 przez ShiroUmizake Nałogowiec (46,300 p.)

Rozdziel metodę na wysyłanie i odbieranie. Obecnie masz tylko odbieranie (POST).Wspóldziel zasoby dla tego controlera.

Bo twój kod wykonuje post, potem odpalasz obiecankę, zakładając, że submitLogin wykona się no i ma odebrać response, skąd ma być ten response? submitLogin nic nie zwraca, dlatego wywala null i zgodnie z twoim założeniem nie ma nic.

 $scope.output = response.data.text;

metoda text dla text/html nie dla JSON. (Patrz nagłówek żądania)

console.log($scope.login);
console.log($scope.password);

Nie będzie działać ,gdyż znajdują się w innym zasięgu niż promise, musisz bindować (gorzej ale bezpieczniej) lub użyć arrow function (fajniejsze, ale na niektórych przeglądarkach nie działa).

Po trzecie, nie używaj tylu funkcji anomimowych!, bo można dostać oczupląsu! :P

I kwiatuszek na końcu:

function() {
             
        });

Co to jest?

komentarz 23 stycznia 2017 przez szustka124 Gaduła (4,380 p.)
Już znalazłem źródło problemu. We właściwym skrypcie PHP zamotałem się przy zasięgu zmiennych. Myślałem, że błąd występuje przy wysyłaniu i odbiorze danych. Ten kod PHP służył mi jedynie do znalezienia problemu. A to na końcu to niedokończona funkcja błędu.

Dziękuję za odpowiedź

Mam jeszcze jedno pytanie. Czemu nie używać funkcji anonimowych, jeżeli nigdy się do nich nie odwołam?
komentarz 24 stycznia 2017 przez ShiroUmizake Nałogowiec (46,300 p.)
Tak ,zgadza się, ale zaciemnia jasność kodu, miałem drobne problemy by znależć odpowiedni scope, dla danej funkcji anomimowej. Fakt, faktem one sę wygodne i potrzebne, a czasami wręcz niezbędnę do prawidłowego działania np: fetch. Jednakże jeżeli, tobie to nie przeszkadza to ok.

Podobne pytania

0 głosów
2 odpowiedzi 635 wizyt
pytanie zadane 28 września 2018 w PHP przez zbrzyzny Nowicjusz (200 p.)
0 głosów
1 odpowiedź 326 wizyt
0 głosów
1 odpowiedź 745 wizyt
pytanie zadane 30 września 2015 w JavaScript przez niezalogowany

93,605 zapytań

142,530 odpowiedzi

322,999 komentarzy

63,095 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...