J'essaie d'obtenir des données à partir de ma méthode web .asmx, mais il échoue à l'appel ajax. Voici mon code JS:jquery ajax échoue en raison d'options.data étant indéfini pour les collections Backbone.js
// BaseCompositeView is basically an object extended from Marionette.CompositeView
MyListView = App.Base.Objects.BaseCompositeView.extend({
// contents removed for brevity
});
// BaseModel is basically an object extended from Backbone.Model
MyListView.Model = App.Base.Objects.BaseModel.extend({
// nothing here
});
// BaseCollection is basically an object extended from Backbone.Collection
MyListView.Collection = App.Base.Objects.BaseCollection.extend({
url: "../WebServices/MyService.asmx/GetUsers",
model: MyListView.Model,
initialize: function(options) {
this.options = _.extend({}, this.defaults, this.options);
this.options.data = JSON.stringify({
"groupID": parseInt(App.Prop.get("GroupID"), 10)
});
}
});
var group_users_view = new MyListView({
tagname: "div",
model: new MyListView.Model(),
collection: new MyListView.Collection()
});
Ma méthode web GetUsers
prend 1 paramètre, un entier nommé groupID. Selon cette page: http://backbonejs.org/#Collection-constructor, la méthode initialize dans MyListView.Collection est appelée lors de la création de la collection, ce qui se produit lorsque MyListView est instancié.
L'erreur se produit dans le fichier jquery-1.12.3.js sur la ligne suivante:
xhr.send((options.hasContent && options.data) || null);
Ici, options.data est undefined
. Cependant, la propriété url des options est correcte. Alors, pourquoi jquery ajax ne reconnaît-il pas les données que je transmets?
Merci Louis! Vous avez absolument raison. J'avais besoin d'ajouter une méthode de synchronisation à ma collection. C'était la pièce manquante du puzzle. Fondamentalement, ici, j'ai ajouté une condition pour vérifier si la méthode est "read" et si oui, alors évoquer une méthode personnalisée qui finit par appeler '$ .ajax()'. Cet appel de méthode personnalisée est l'endroit où je passerais dans mon 'collection.options.data' qui a été initialisé dans la méthode initialize de ma collection. – SpartaSixZero