mam ten kod:
app.controller('MainCtrl', function ($scope, $http){
$http.get('api/url-api')
.success(function (data, status, headers, config){
}
}
W moim lokalnym środowisku działa dobrze, ale na serwerze zwróć ten błąd:
TypeError: $ http.get (...). Sukces nie jest funkcją
Jakieś pomysły? Dzięki
javascript
angularjs
ajax
function
Alejo Ribes
źródło
źródło
then()
niesuccess()
.success
Składnia była prawidłowa do Kątowymi v1.4.3. Zobacz stare dokumenty tutaj: code.angularjs.org/1.4.3/docs/api/ng/service/$httpOdpowiedzi:
Plik
.success
Składnia była prawidłowa do Kątowymi v1.4.3.W przypadku wersji do Angular v.1.6 musisz użyć
then
metody.then()
Metoda przyjmuje dwa argumenty: asuccess
orazerror
wywołania zwrotnego, która zostanie wywołana z obiektu odpowiedzi.Korzystając z
then()
metody, dołączcallback
funkcję do zwracanejpromise
.Coś takiego:
Zobacz odniesienie tutaj.
Shortcut
dostępne są również metody.Oczekuje się, że dane otrzymane z odpowiedzi będą w
JSON
formacie. JSON to świetny sposób na transport danych i jest łatwy w użyciu w AngularJSGłówną różnicą między 2 jest to, że
.then()
wywołanie zwraca apromise
(rozwiązane z wartością zwróconą z acallback
), podczas gdy.success()
jest bardziej tradycyjnym sposobem rejestracjicallbacks
i nie zwraca apromise
.źródło
.success
i.then
weź inny parametr, weź pod uwagę toMoże to być zbędne, ale powyższa odpowiedź,
.then(function (success)
która jest najczęściej głosowana, mówi, że nie działało to dla mnie od wersji Angular1.5.8
. Zamiast tego użyjresponse
następnie wewnątrz bloku, abyresponse.data
uzyskać moje dane json, których szukałem.źródło
success.data
? nazwa parametru nie jest tak ważna w tym przypadku.$http.get('data/data.json').success(function(data) { data = data;}
z moją odpowiedzią programista wie teraz, żedata.data
nie może sam uzyskać danych. stąd moja odpowiedź jest ważna dla tego komunikatu o błędzie.success.data
alboresponse.data
czy cokolwiek innego. Możesz nawet użyć,donaldTrump.data
że to też zadziała. Chociaż powinieneś używać rozsądnych nazw zmiennych, nie jestem pewien, czy ta będzie miała sens.data
która przechowuje dane przychodzące w odpowiedzi z serwera. musisz uzyskać dostęp do tej tablicy danych, używając<yourSuccessObjectName>.data
Jeśli próbujesz używać AngularJs 1.6.6 od 21/10/2017, następujący parametr działa jak .success i został wyczerpany. Metoda .then () przyjmuje dwa argumenty: odpowiedź i wywołanie zwrotne błędu, które zostanie wywołane z obiektem odpowiedzi.
Powyższy fragment działa dla strony logowania.
źródło