heinetz: Formular per Ajax versenden

Beitrag lesen

Vielen Dank! Ich musst mir das einige Male durchlesen, die Funktionsweise wird deutlich aber es erfordert doch einiges umdenken. Ich hab die Vorlage mal zu Ende und eingebaut:

  submitAndHandleResponse(event) {
    event.preventDefault();
    return this.submitForm()
      .then(this.handleHttpResponse)
      .then(this.handleHttpSuccess, this.handleHttpError)
      .then(this.handleJsonSuccess)
      .then(this.showMessage.bind(this));
  }

  submitForm() {
    const { action, method } = this.elements.commentForm.cloneNode(false);
    const body = new FormData(this.elements.commentForm);
    const headers = {
      'Content-type': 'application/x-www-form-urlencoded; charset=UTF-8'
    };
    return fetch(action, { method, headers, body });
  }

  handleHttpResponse(response) {
    return response.ok ? Promise.resolve(response) : Promise.reject(response);
  }

  handleHttpSuccess(response) {
    return response.json();
  }

  handleHttpError(response) {
    return {
      state: 'error'
    };
  }

  handleJsonSuccess(json) {
    return Promise.resolve(json);
  }

  showMessage(json) {
    if (json.message) {
      this.elements.messageBox.innerHTML = json.message;
    }
    this.elements.self.dataset.state = json.state;
  }
}

So tut's genau das selbe, wie die Quick&Dirty-Lösung. Dennoch erschliesste sich mir der Mehrwert nicht.

Gruss, heinetz