AJAX – Envoi d’observables désactivés sous forme d’object JSON au serveur à l’aide d’AJAX

J’essaie d’envoyer à mon serveur des champs de formulaire liés à des éléments observables particuliers sous la forme d’object JSON, mais je reçois une chaîne JSON vide côté serveur. Je ne souhaite pas envoyer l’intégralité du modèle de vue pour accomplir cette tâche. c’est le javascript que j’ai jusqu’ici:

$(document).ready(function(){ ko.applyBindings(new AddSubjectKo()); }); function AddSubjectKo() { var self=this; self.name = ko.observable(); self.quiz = ko.observable(); self.ass = ko.observable(); self.oht = ko.observable(); self.sess = ko.observable(); self.ese = ko.observable(); self.SubjectAdded=function() { $.ajax({ url: "api/courses", type: "post", data: formToJSON(), contentType: "application/json", success: function(data){ alert("success"); }, error:function(jqXHR, textStatus, errorThrown) { alert("failure"); } }); function formToJSON() { alert(self.name()); return JSON.ssortingngify({ "name": self.name, "quiz": self.quiz, "ass": self.ass, "oht": self.oht, "sess": self.sess, "ese": self.ese, }); } } //$("#alert").slideDown(); } 

Vous pouvez utiliser la fonction ko.toJSON pour cela:

  function AddSubjectKo() { var self=this; self.name = ko.observable(); self.quiz = ko.observable(); self.ass = ko.observable(); self.oht = ko.observable(); self.sess = ko.observable(); self.ese = ko.observable(); self.SubjectAdded=function() { $.ajax({ url: "api/courses", type: "post", data: ko.toJSON(self), contentType: "application/json", success: function(data){ alert("success"); }, error:function(jqXHR, textStatus, errorThrown) { alert("failure"); } }); } 

Utilisez simplement call the observable (ajoutez des parenthèses) pour récupérer les valeurs dans les observables:

  $(document).ready(function(){ ko.applyBindings(new AddSubjectKo()); }); function AddSubjectKo() { var self=this; self.name = ko.observable(); self.quiz = ko.observable(); self.ass = ko.observable(); self.oht = ko.observable(); self.sess = ko.observable(); self.ese = ko.observable(); self.SubjectAdded=function() { $.ajax({ url: "api/courses", type: "post", data: formToJSON(), contentType: "application/json", success: function(data){ alert("success"); }, error:function(jqXHR, textStatus, errorThrown) { alert("failure"); } }); function formToJSON() { alert(self.name()); return JSON.ssortingngify({ "name": self.name(), "quiz": self.quiz(), "ass": self.ass(), "oht": self.oht(), "sess": self.sess(), "ese": self.ese(), }); } } //$("#alert").slideDown(); }