Я пытаюсь получить некоторые данные из моего веб-метода .asmx, но он не работает при вызове ajax. Вот некоторые из моих JS кода:jquery ajax failing из-за того, что options.data не определено для коллекций 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()
});
Мой веб-метод GetUsers
принимает 1 параметр, целое число с именем GroupID. Согласно этой странице: http://backbonejs.org/#Collection-constructor, метод инициализации внутри MyListView.Collection вызывается при создании коллекции, которая происходит при создании экземпляра MyListView.
Ошибка происходит внутри файла Jquery-1.12.3.js на следующей строке:
xhr.send((options.hasContent && options.data) || null);
Здесь options.data является undefined
. Однако свойство URL-адресов правильное. Итак, почему jquery ajax не распознает данные, которые я передаю?
Спасибо Луи! Вы абсолютно правы. Мне нужно было добавить метод синхронизации в мою коллекцию. Это был недостающий кусочек головоломки. В принципе, здесь я добавил условие, чтобы проверить, является ли метод «прочитанным», и если да, то вызывают пользовательский метод, который в конечном итоге вызывает '$ .ajax()'. Этот вызов специального метода - это то место, где я передал бы мой 'collection.options.data', который был инициализирован в методе инициализации моей коллекции. – SpartaSixZero