document.querySelectorAll('#form_tier').forEach(btn => btn.addEventListener('submit', function (e) {
     let submitbtn = btn.querySelector('#press');
     let loadbtn  = btn.querySelector('.chargement');
        $(submitbtn).button().hide();
        $(loadbtn).button().show();
    //    var id = $(this).attr('data-id');

    e.preventDefault();
    //  console.log(new FormData(e.target));
    fetch(this.action, {
        body: new FormData(e.target),
        method: 'POST'
    })
        .then(response => response.json())
        .then(json => {
           $(submitbtn).button().show();
        $(loadbtn).button().hide();
          console.log(json);
            handleResponse(json);
        });

}));

je voudrais retourner une page d'erreur (404, 500, etc ...) selon le code d'erreur de la requete ajax

2 réponses


Pense à lire la doc !
Une promesse fetch() n'est rejetée que quand un problème de réseau est rencontré, même si en réalité cela signifie généralement qu'il y a un problème de permissions ou quelque chose de similaire. La promesse ne sera pas rejetée en cas d'erreur HTTP (404, etc.) Pour cela, un gestionnaire then() doit vérifier que la propriété Response.ok ait bien pour valeur true et/ou la valeur de la propriété Response.status.

Donc suivant la valeur de response.status tu affiches un message adequat.

merci beaucoup