azertyuiop12345666 Posted September 10, 2013 Share Posted September 10, 2013 (edited) Bonjour, Je veux ajouter un produit à mon panier en ajax lors de la soumission d'un fomulaire comme ci : ajaxCart.add(id, null, null, '#monbouton' ,1,null); Cependant lorsque j'essaie je reçois une belle alerte : Impossible to add the product to the cart. J'ai regardé sur internet et les bugs liés au panier Ajax semblent récurrents sur Prestashop. Lorsque j'éxécute la fonction hors de ma fonction jquery .submit() je n'ai pas de soucis l'ajout au panier se fait bien. Comment pouvez-vous expliquer ce bug ? Merci d'avance. Edited September 10, 2013 by guizmo83 (see edit history) Link to comment Share on other sites More sharing options...
azertyuiop12345666 Posted September 10, 2013 Author Share Posted September 10, 2013 Déplacé dans Difficultés, pannes ou erreurs rencontrées à l'adresse : http://www.prestashop.com/forums/topic/273955-fonction-ajaxcartadd-du-panier-ajax-buggue-si-éxécutée-à-la-soumission-dun-formulaire/?p=1373140 Link to comment Share on other sites More sharing options...
Gregory Roussac Posted September 10, 2013 Share Posted September 10, 2013 Hello, Il vous manque peut être un token, en fonction de si c'est un POST ou UN GET, si le param ajax est communiqué peut etre aussi.? Activez le mod_dev et sinon il faut chercher dans le contrôleur à quel niveau il renvoi cette impossibilité. A priori il doit lui manquer des infos ? Ce n'est pas un bug de la solution désolé mais une demande concernant du dev spécifique. Cordialement Link to comment Share on other sites More sharing options...
azertyuiop12345666 Posted September 10, 2013 Author Share Posted September 10, 2013 (edited) Bonsoir, merci de votre réponse. J'ai pourtant bien renseigné tous les paramètres de la fonction add(). Ce qui est bizarre c'est que celle ci fonctionne correctement lorsqu"elle n'est pas dans le .submit() du formulaire. Il faut dire aussi que le alert n'apporte pas d'infos quand au niveau de l'erreur potentielle. Rq: Lorsque j'ajoute un return false à la fin de ma fonction éxécutée au submit du formulaire je n'ai plus l'erreur mais évidemment le formulaire n'est pas transmis donc pas d'intérêt. A partir de là je ne vois pas en quoi c'est du développement spécifique de simplement appeler une fonction existante dans un submit() de formulaire. J'essaierai d'activer le debug pour voir si je peux avoir plus d'infos que ce alert. Edited September 10, 2013 by guizmo83 (see edit history) Link to comment Share on other sites More sharing options...
Gregory Roussac Posted September 10, 2013 Share Posted September 10, 2013 Le submit est peut etre par defaut en POST et non en GET ? Regardez dans le contrôleur, le alert n'est pas pour les devs mais pour les utilisateurs. Cordialement Link to comment Share on other sites More sharing options...
azertyuiop12345666 Posted September 10, 2013 Author Share Posted September 10, 2013 (edited) Je ne soumets pas le formulaire en js. J'attache juste un traitement lorsque le formulaire est soumis d'où: $('#monform').submit(function() {// appel à ajaxCart.add() qui renvoie l'erreur} ); Mon formulaire est défini avec action="post" et est soumis avec un input type submit de manière classique. Edited September 10, 2013 by guizmo83 (see edit history) Link to comment Share on other sites More sharing options...
Gregory Roussac Posted September 10, 2013 Share Posted September 10, 2013 Ah ok. Plusieurs possibilités, le formulaire est soumis il envoit la page, le javascript est interrompu sinon il faut un return false je crois mais vous avez du le voir Une fonction a une portée globale peut être ? je ne sais pas si ajaxCart est défini dans la fonction. Désolé je n'ai jamais essayé cela je crois j'ai toujours pompé la requête d'ajax vers le panier. Bon courage. Cordialement Link to comment Share on other sites More sharing options...
azertyuiop12345666 Posted September 11, 2013 Author Share Posted September 11, 2013 (edited) En regardant dans le code de ajax-cart.js, j'ai vu : //for product page 'add' button... $('#add_to_cart input').unbind('click').click(function(){ ajaxCart.add( $('#product_page_product_id').val(), $('#idCombination').val(), true, null, $('#quantity_wanted').val(), null); return false; }); C'est l'action liée à l'appui sur le bouton "ajout au panier" dans la page produit. La aussi si j'enlève le return false alors le message d'alerte apparait mais le produit est bien ajouté contrairement à mon cas. C'est à n'y rien comprendre. Alors je veux bien mettre un return false moi aussi mais ensuite comment soumettre mon formulaire dans un deuxième temps ? Edited September 11, 2013 by guizmo83 (see edit history) Link to comment Share on other sites More sharing options...
Gregory Roussac Posted September 11, 2013 Share Posted September 11, 2013 Oui sauf que dans ce contexte, ajaxCart est defini //JS Object : update the cart by ajax actions var ajaxCart = { .... on est dans l'objet. Le return false; n'est pas là pour la photo, il est requis sinon la page part. Il y a un souci quelque part..... Cordialement Link to comment Share on other sites More sharing options...
azertyuiop12345666 Posted September 11, 2013 Author Share Posted September 11, 2013 Le module bloc panier étant attaché à ma position header, j'ai forcément accès à cette variable dans toutes mes pages non ? . La preuve l'ajout marche quand je n'éxécute pas la fonction dans le .submit(). Link to comment Share on other sites More sharing options...
azertyuiop12345666 Posted September 11, 2013 Author Share Posted September 11, 2013 (edited) Il faudrait que j'arrive à faire quelque chose de ce genre : $('#boutonsubmitformulaire').click(function(){ // appel à ajaxCart.add(); return false; }); et séquentiellement à la fin de l'éxécution de cette fonction soumettre mon formulaire avec: $('#monform").submit(); Ainsi l'ajout au panier fonctionnera(grâce au return false) et je soumets ensuite mon formulaire avec le submit(). Y-a-t-il un moyen de faire ceci ? Edited September 11, 2013 by guizmo83 (see edit history) Link to comment Share on other sites More sharing options...
Gregory Roussac Posted September 11, 2013 Share Posted September 11, 2013 Sans tester je ne sais pas, a priori oui dans les javascripts en dessous mais peut être pas les inlines scripts. Faites une console.log(ajaxCart) dans le submit et regardez ! Sans avoir testé... $('#monform').submit(function() { console.log(ajaxCart); if(ajaxCart) return ajaxCart.add(id_product, id_product_attribute, false, button, 1, whishlist); return false; }); Cordialement Link to comment Share on other sites More sharing options...
azertyuiop12345666 Posted September 11, 2013 Author Share Posted September 11, 2013 L'objet est bien présent : Object { nb_total_products=0, overrideButtonsInThePage=function(), expand=function(), more...} Link to comment Share on other sites More sharing options...
Gregory Roussac Posted September 11, 2013 Share Posted September 11, 2013 Alors je suis à court d'idée ! Link to comment Share on other sites More sharing options...
azertyuiop12345666 Posted September 11, 2013 Author Share Posted September 11, 2013 (edited) Finalement j'ai contourné le bug à défaut de pouvoir le résoudre. J'ai ajouté mon produit au panier AJAX sur une autre action que le submit du formulaire( le change sur les input radio de mon formulaire). $('#input').each(function(){ if($(this).change(function(){ // ajout ajax du produit return false; }); }); J'ai pu ensuite soumettre mon formulaire sans soucis(car plus de return false à mettre). Merci. Edited September 11, 2013 by guizmo83 (see edit history) 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