Save a Model through adapter


#1

route/report/final-check.js`

actions:{
submit(){
  var model = this.get('model').reports;
  var store = this.get('store');
  this.get('model').reports.save().then(function(model){
    alert('segnalazione inviata');
    this.transitionToRoute('report.lastpage');
  }, function(error){
    console.log(error);
  });

adapter/reporrt.js

createRecord(store, type, snapshot){

  let data = this.serialize(snapshot, { includeId: true });
  alert(data);
  console.log(data);
  return new Promise(function(resolve, reject){
    let xhr = new XMLHttpRequest();
    var method = 'POST';
    var url = 'https://test.vigifarmaco.it/api/v1/submit';
    var headers = {
      "Vigifarmaco-Api-Key" : "0Utrr0yHwHQbXr9TT1COrQtt",
      "Content-type" : "text/xml"
    };

    if ("withCredentials" in xhr) {
    // XHR for Chrome/Firefox/Opera/Safari.
      xhr.open(method, url, true);
    } else if (typeof XDomainRequest != "undefined") {
      // XDomainRequest for IE.
      xhr = new XDomainRequest();
      xhr.open(method, url);
    } else {
      // CORS not supported.
      xhr = null;
    }

    if (!xhr) {
      alert('CORS not supported');
      return;
    }


    xhr.onreadystatechange = alertContents;
    xhr.setRequestHeader("Vigifarmaco-Api-Key", "0Utrr0yHwHQbXr9TT1COrQtt");
    xhr.setRequestHeader("Content-type" , "text/xml");
    xhr.send(data);

    var a = xhr.response;
    console.log(a);

    function alertContents() {
      if (xhr.readyState == 4){
        if(xhr.status == 200){
          resolve(parseSegnalazione(xhr.responseXML));
        }
        else {
        reject(new Error('post: `' + url + '` failed with status: [' + this.status + ']'+ 'failed with readyState:' + this.readyState+''));
        }
      }
    };

    function parseSegnalazione(xml){

      console.log(xml);

      var json = {
        jsonapi: {
          version: "1.0"
         },
        data: [
        ]
      };

      var success = xml.getElementsByTagName('status');
      var vigId = xml.getElementsByTagName('vigifarmaco-id');



      json.data.push({"id":vigId[0].childNodes[0].nodeValue});
      console.log(json);
      return json;
    }

});

}

Hi everybody!

Here i have this problem: i want to send to the server this data through adapter, but when i try to send it, it seems that in final-check method the callback is always rejected. I can’t understand why! Thank you for response!