goujon Posted February 23, 2015 Share Posted February 23, 2015 (edited) Bonjour, Dans une boutique, je sur un module ajouter une liste de produit dans le panier. Je récupère bien tous ce dont j'ai besoin pour l'ajout au panier mais j'ai un petit problème : Lorsque l'on se connect au site pour la première fois et que l'on ajoute cette liste de produit cela n'ajoute que le dernier produit de la liste. Après, les fois suivante, cela fonctionne corectement toute la liste de produit est ajouté correctement. Je me suis apperçu que cela vennais des cookies car si je vide le cache (avec les cookies) le problème revien. je vous met le code javascript que j'utilise pour l'ajout au panier //On ajoute le produit au panier for(var i=0;i<prodTab.length;i++){ ajaxCart.add(prodTab[i]['idProd'], prodTab[i]['attrProd'], true, null, prodTab[i]['quantiteProd'], null); } l'appel à ajaxCart.add se fait dans product.tpl. Si vous avez une idée (ou une solution) Merci d'avance Cordialement Bobjo Edited February 23, 2015 by goujon (see edit history) Link to comment Share on other sites More sharing options...
goujon Posted February 23, 2015 Author Share Posted February 23, 2015 J'ai remarqué un truc : la boucle que j'utilise, fais une succession de requêtes. On dirrait que le produit ajouté au panier lorsqu'il y a le bug ne soit pas le dernier de la liste mais celui qui met le plus de temps à terminer la requête. exemple : produit 1 = 457ms produit 2 = 477ms produit 3 = 499ms produit 4 = 483ms c'est le produit 3 qui est ajouté au panier. J'ai testé l'ajout des autres produits au panier et cela fonctionne. C'est comme si la requête la plus longue à s'executer écrasé les autres. Une petite remarque qui pourrait donner une idée à quelqu'un, la globale $cart_qties qui sert à afficher le nombre de produit dans le panier n'est pas mise à jour. Cordialement Bobjo Link to comment Share on other sites More sharing options...
goujon Posted February 23, 2015 Author Share Posted February 23, 2015 Alors semble bien qu'il y est un problème dans les temps d'execution des requête. J'ai mis une alerte dans la boucle qui fais l'ajout au panier ce qui permet à chaque requête de se terminer tranquilement. Et là tous le produits ont été ajouté.... Comment je pourrait temporriser les requêtes ? Cordialement Bobjo Link to comment Share on other sites More sharing options...
goujon Posted February 23, 2015 Author Share Posted February 23, 2015 Je continu à me répondre... Je viens de remarquer que lorsqu'il y a le problème d'ajout au panier dans la liste des panier créé du back office, cela crée 4 paniers. Un panier par produit. Si je supprime le produit du panier et que je relance mon script pour ajouter ma liste de produit, prestashop utilise le panier qui contenait le produit supprimé. Link to comment Share on other sites More sharing options...
goujon Posted February 23, 2015 Author Share Posted February 23, 2015 Bon j'ai fini par trouvé. J'ai temporisé ma boucle en la coupant en 2 et ajoutant dans le fichier ajax-cart.js le callbabak complete et un paramaètre à la foinction add. Quand le le premier appel est complet il appel la suite. Pour info le problème venait de la création du panier. fichier ajax-cart.js ajout du paramètre first add : function(idProduct, idCombination, addedFromProductPage, callerElement, quantity, whishlist,first){ ajout du callback complete : complete : function(resultat, statut){ if(first == 1){ addtocart(); } } dans product .tpl : ajout du premier produit : ajaxCart.add(prodTab[0]['idProd'], prodTab[0]['attrProd'], true, null, prodTab[0]['quantiteProd'], null,1); fonction pour le reste de la liste appelé dans le callback complete var addtocart = function(){ for(var i=1;i<4;i++){ //setTimeout(temp(prodTab[i]['idProd'], prodTab[i]['attrProd'],prodTab[i]['quantiteProd']),execut); ajaxCart.add(prodTab[i]['idProd'], prodTab[i]['attrProd'], true, null, prodTab[i]['quantiteProd'], null,0); } } C'est pas super mais bon ça marche. Link to comment Share on other sites More sharing options...
boulio971 Posted April 30, 2015 Share Posted April 30, 2015 (edited) Bonjour, Je me permets de répondre à ton message car je pense avoir un pb similaire au tien sauf que je n'utilise pas de .tpl ici [Version : PS 1.6.0.14] J'ai modifié le contenu de mon fichier ajax-cart.js afin que lorsque l'utilisateur clique sur le bouton "ajouter au panier" 2 produits soient ajoutés au panier : ajaxCart.add(idProduct1, $('#idCombination').val(), true, null, $('#quantity_wanted').val(),null) ;ajaxCart.add(idProduct2, null, true, null, $('#quantity_wanted').val(),null) ; J'ai les résultats suivants : - Parfois cela fonctionne (les 2 produits sont bien ajoutés au panier) - Parfois un seul des 2 produits est ajouté au panier (le 1er ou le 2è aléatoirement) - Parfois j'ai une erreur de type "Impossible to add the product to the cart. textStatus: 'error' errorThrown: 'Internal Server Error' responseText:" généralement accompné d'une erreur 500 :"NetworkError: 500 Internal Server Error - http://localhost/pre...d=1430404364908" Je suppose que cela est du à l'enchainement de l'appel de 2 instructions Ajax , mais je ne sais pas comment faire pour que ça fonctionne coup sur coup, sachant que je souhaite que mes produits soient ajoutés systématiquement dans l'ordre suivant : produit1 puis produit2 Pourrais-tu m'aider stp ? Merci Edited April 30, 2015 by boulio971 (see edit history) Link to comment Share on other sites More sharing options...
boulio971 Posted April 30, 2015 Share Posted April 30, 2015 La réponse est dans ta méthodologie, pour ma part ça me va ! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now