Tengo el siguiente AJAX, pero debe ser devuelto un error 422 (lo que significa fuera de stock ). He intentado unas cuantas maneras en torno, pero se designa y se niega a POST afirmando:

Failed to load resource: the server responded with a status of 422 ()

No estoy seguro de cómo coger el error 422 y devuelva algo al usuario que muestra que está agotado.

      Shopify.moveAlong = function() {
        // If we still have requests in the queue, let's process the next one.
        if (Shopify.queue.length) {
          var request = Shopify.queue.shift();
          var data = 'id='+ request.variant_id + '&quantity='+request.quantity_id;
          $.ajax({
            type: 'POST',
            url: '/cart/add.js',
            dataType: 'json',
            data: data,
            success: function(res){
              Shopify.moveAlong();
            },
            error: function(){
              // if it's not last one Move Along else update the cart number with the current quantity
              if (Shopify.queue.length){
                Shopify.moveAlong()
              }
            }
          });
        }
        else {
          window.location.href = "/cart";
        }
      };
      Shopify.moveAlong();
0
JMKelley 13 jul. 2019 a las 18:34

1 respuesta

La mejor respuesta

He intentado algunas maneras en torno, pero es un error y se niega a publicar.

Lo que he entendido es que está viendo este error en la consola del navegador. No se puede prevenir, pero no significa que su solicitud no está pasando. La solicitud posterior se recibe por Shopify y se envía una respuesta con el estado 422, de modo que se trata como un error (los códigos de respuesta no 2xx se tratan como error).

Para manejar el mensaje de error de error y mostrar, adaptar el código en consecuencia. Verifique el código actualizado y los comentarios del código.

Shopify.moveAlong = function() {
    // If we still have requests in the queue, let's process the next one.
    if (Shopify.queue.length) {
        var request = Shopify.queue.shift();
        var data = 'id=' + request.variant_id + '&quantity=' + request.quantity_id;
        $.ajax({
            type: 'POST',
            url: '/cart/add.js',
            dataType: 'json',
            data: data,
            success: function(res) {
                Shopify.moveAlong();
            },
            error: function(jqXHR, textStatus, errorThrown) {
                // Check status code
                if (jqXHR.status === 422) {
                    // display error wherever you want to  
                    console.log(jqXHR.responseText);
                }
                // if it's not last one Move Along else update the cart number with the current quantity
                if (Shopify.queue.length) {
                    Shopify.moveAlong()
                }
            }
        });
    } else {
        window.location.href = "/cart";
    }
};
Shopify.moveAlong();

Error AJAX DOCS

1
Bilal Akbar 16 jul. 2019 a las 09:57