backbone.js appels ajax
Je m 'apprentissage Backbone.js pour une nouvelle application que je suis en train de construire.
J'ai besoin d'effectuer un appel AJAX(REST SERVICE
) pour s'authentifier.
Où est le bon endroit pour cet appel? Dans le Modèle, la Vue ou quelque part d'autre? spécifiquement liées à Backbone.js modèle MVC.
<html>
<head>
<script src="lib/jquery-1.6.1.min.js"></script>
<script src="lib/json2.js"></script>
<script src="lib/underscore-min.js"></script>
<script src="lib/backbone-min.js"></script>
<script language="javascript">
$(function(){
var LoginView = Backbone.View.extend({
el: $("#login-form"),
events: {
"click #login": "login"
},
login: function(){
alert("Hello");
}
});
window.LoginView = new LoginView();
});
</script>
</head>
<body>
<form action="/login" id="login-form">
Username: <input type="text" id="username"><br>
Password: <input type="password" id="password"><br>
<button id="login">Login</button>
</form>
</body>
</html>
source d'informationauteur John Cooper | 2012-07-04
Vous devez vous connecter pour publier un commentaire.
Créer un Modèle d'authentification, qui stocke le poste de l'état (nom d'utilisateur, mot de passe se souvenir de moi) ainsi que la réponse de l'état (échec de la connexion, la connexion est acceptée)...
Mise à jour de l'Affichage à l'utilisation du modèle:
);
L'Appel De Modèle.Save() émet une requête post vers le serveur, bien que, dans cette instance sur le serveur, vous n'êtes pas en train de sauver quoi que ce soit, mais de vérifier les informations d'identification et de renvoyer un objet avec le même modèle, mais avec le "LoginAccepted" ensemble sur le terrain de façon appropriée.
Ne pas mettre en œuvre personnalisée AJAX de JQuery Posts - its pas dans l'esprit de l'épine dorsale, qui s'occupe de tout pour vous sous le capot par l'intermédiaire de son interface REST.
Plus de détails sur le RESTE de l'interface et les différents RESTE des Actions et des URL épine dorsale utilise ici: http://codebyexample.info/2012/04/30/backbone-in-baby-steps-part-3/
Une chose de plus sur l'AJAX vs modèle.save() débat. Si votre demande a été d'un apatride en salle de chat comme l'IRC - qui envoie des messages à d'autres utilisateurs dans la salle de chat, mais n'enregistre pas les messages de manière centralisée... voulez-vous vous débarrasser de l'épine dorsale du RESTE de la fonctionnalité et de mettre à la coutume des appels AJAX parce que vous n'êtes pas en train de "sauver", vous êtes vraiment juste "envoi". Cela vous coûterait une énorme quantité de travail à ré-implémenter des fonctionnalités qui est déjà là, tout simplement parce que de la sémantique. Toujours lire le modèle.save() comme modèle.post() - pas seulement pour sauver sa pour l'envoi.
Vous commencez toujours dans la vue parce que vos interactions DOM (incl. formulaire soumet) arriver dans les vues.
Puis, si j'étais vous, je voudrais ajouter une méthode personnalisée pour le modèle de l'Utilisateur, et l'appel à la méthode de la vue. La méthode de login ne pas correspondre exactement avec les autochtones de la Dorsale de synchronisation que vous n'êtes pas d'essayer d'ajouter /mettre à jour /récupérer quoi que ce soit (à l'esprit que vous NE voulez PAS à la charge de l'utilisateur mot de passe ou le mot de passe de hachage à partir du serveur pour des raisons de sécurité). Si vous faites régulièrement appel Ajax sans appel épine Dorsale fetch(). Donc, ici, vous allez:
Et la vue:
Assurez-vous de passer le UserModel instance à la UserView instance, par exemple:
Reste est PAS un standard, il suffit d'un spec et un développeur de mélanger les Repos et RPC lorsque cela est approprié de le faire. Cela dit, aucune de ces réponses a souligné le fait que la réponse du serveur doit retourner un jeton (sessionID, JSON web jeton, etc.) et supprimer le texte en clair le mot de passe. A défaut, présente un risque pour la sécurité.