Bonjour,

Voila je rencontre un petit problème avec mon code.

Je travail sur shopify.

j'envoie une requête ajax après un submit

je reçois un message d'erreur 400 car dans ma requete une data manque à l'envoi.
En gros j'ai un tableau et des fois ma ligne mes variables cartAttributes et orderItems se vident.
alors elles ne le sont pas avant l'envoi donc ce que je voudrais savoir précisément c'est est ce que le javascript saute des instructions , je ne souhaite pas qu'on m'aide pour le code mais eulement savoir si le javascript peut sauter des instruction dans certaines situation.

Entourez votre code[]([](
    var order = [];

    order.push(
      {
          "email":{{ customer.email | json }},
          "total_price":cartTotalPrice,
          "subtotal_price":cartSubTotalPrice,
          "total_tax":cartTotalTax,
          "financial_status":"pending",
          "source": "Proxy",
        "note_attributes":[
              cartAttributes
          ],
          "line_items":
              orderItems
          ,
          "customer":{"id":{{ customer.id | json }}},
          "shipping_address":{
              "address1":address1,
              "phone":phone,
              "city":city,
              "zip":zip,
              "country":country,
              "address2":address2,
              "company":company,
              "name":{{ customer.name | json }}
          }
      }
    );

    var orderJSON = 'orderJSON='+JSON.stringify(order);

merci pour votre aide.

6 réponses


Defy
Réponse acceptée

Si c'est de l'asynchrone et que ton traitement est en dehors de l'appel ajax, oui l'instruction seras traiter plus tard mais tu n'en seras pas informé, c'est le principe non bloquant du js.

shep-ard
Auteur

ahhh d'accord merci defy

shep-ard
Auteur

existe t'il un moyen de savoir dans quel ordre les instructions ont fini leurs executions sans console.log()?

Non, tout les traitement concernant tes data asynchrone se font dans le block d'appel ajax.

shep-ard
Auteur

le traitement est bien en dehors du bloc ajax mais normalement le traitement se fait avant vu que avant ajax on est sur du synchrone et que le traitement se fait plus rapidement que l'envoi de la requete ajax

///


        var orderJSON = 'orderJSON='+JSON.stringify(order);
        //$("#log").append(orderJSON);
        // console.log(order);
        console.time(orderJSON);
        console.log(orderJSON);
        console.timeEnd(orderJSON);

        var startTime = new Date().getTime();
        var elapsedTime = 0;

        $.ajax({
          url: "/apps/new-order",
          data: orderJSON,
          type: "GET",
          crossDomain:true,
          contentType: "application/json;charset=UTF-8",
          dataType: 'json',
          beforeSend: function(){
            //$('#overlay').empty().append('<div id="feedback"><h2 class="text-center neutral"><img src="{{ 'ajax-loader.gif' | asset_url }}"></h2></div>').fadeIn();
            console.time("succes");
            console.time("done");
            console.time("alwayz");
          }
        });

Je résume un peut tout ça, tu traite ton order en amont et tu veut l'envoyer au server, donc c'est pas un get mais un post a faire dans ta requette. Si tu veux envoyer de la data a ton server, forcément c'est une requette post/put/patch pas du get.