j'ai ce code:
app.controller('MainCtrl', function ($scope, $http){
$http.get('api/url-api')
.success(function (data, status, headers, config){
}
}
Dans mon environnement local, fonctionne bien, mais dans un serveur, renvoie cette erreur:
TypeError: $ http.get (...). Le succès n'est pas une fonction
Des idées? Merci
javascript
angularjs
ajax
function
Alejo Ribes
la source
la source
then()
n'est passuccess()
.success
syntaxe était correcte jusqu'à Angular v1.4.3. Voir les anciens documents ici: code.angularjs.org/1.4.3/docs/api/ng/service/$httpRéponses:
La
.success
syntaxe était correcte jusqu'à Angular v1.4.3.Pour les versions jusqu'à Angular v.1.6, vous devez utiliser
then
method. Lathen()
méthode prend deux arguments: asuccess
et unerror
callback qui sera appelé avec un objet de réponse.À l'aide de la
then()
méthode, attachez unecallback
fonction au fichierpromise
.Quelque chose comme ça:
Voir la référence ici.
Shortcut
des méthodes sont également disponibles.Les données que vous obtenez de la réponse doivent être au
JSON
format. JSON est un excellent moyen de transporter des données , et il est facile à utiliser dans AngularJSLa principale différence entre les 2 est que l'
.then()
appel retourne apromise
(résolu avec une valeur renvoyée par acallback
) alors que.success()
c'est une manière plus traditionnelle de s'enregistrercallbacks
et ne renvoie pas apromise
.la source
.success
et.then
prendre des paramètres différents, en tenir compteCela peut être redondant, mais la réponse la plus votée ci-dessus dit
.then(function (success)
et cela n'a pas fonctionné pour moi à partir de la version Angular1.5.8
. Au lieu de cela, utiliserresponse
alors à l'intérieur du blocresponse.data
m'a permis d'obtenir mes données json que je recherchais.la source
success.data
? le nom du paramètre n'est pas si important dans ce cas.$http.get('data/data.json').success(function(data) { data = data;}
avec ma réponse, un développeur sait maintenant qu'il nedata.data
peut pas simplement obtenir des données par lui-même. par conséquent, ma réponse est importante pour ce message d'erreur.success.data
ouresponse.data
ou quoi que ce soit d'autre. Vous pouvez même utiliserdonaldTrump.data
cela fonctionnera aussi. Bien que vous deviez utiliser des noms de variables raisonnables, vous n'êtes pas sûr que celui-ci ait beaucoup de sens.data
qui contient les données provenant de la réponse de votre serveur. vous devez accéder à ce tableau de données, en utilisant<yourSuccessObjectName>.data
Si vous essayez d'utiliser AngularJs 1.6.6 à partir du 21/10/2017, le paramètre suivant fonctionne comme .success et a été épuisé. La méthode .then () prend deux arguments: une réponse et un rappel d'erreur qui seront appelés avec un objet de réponse.
Le snipit ci-dessus fonctionne pour une page de connexion.
la source