2017-02-01 2 views
2

Ich arbeite derzeit an einem Kombi-Angebot auf NopCommerce. Also muss ich mehrere Produkte mit einem einzigen Klick in den Warenkorb legen. Das in NopCommerce gebaut Format wird für einzelnes Produkt in der Warenkorb hinzufügen istMehrere Produkte im Warenkorb bei einem einzigen Klick hinzufügen - NopCommerce

AjaxCart.addproducttocart_catalog('/addproducttocart/catalog/' + productId + '/1/1' 

und

AjaxCart.addproducttocart_details('/addproducttocart/details/' +productId + '/1', '#product-details-form') 

Beide für das Hinzufügen von einzelnem Produkt funktionieren. Aber wenn ich mehrere Produkte hinzufügen möchte, dann fügen Sie einfach ein einzelnes Produkt in den Warenkorb. Erwähnen Sie, dass ich eine Zeichenfolge mit einem Koma-Trennungswert sende, die eine Liste von Produkten ist, und innerhalb von Javascript als einzelne Produkt-ID analysiert wird. Es wird jedoch nur ein einzelnes Produkt in den Warenkorb hinzugefügt. Die Produkt-ID ist die niedrigste, die das Produkt zum Warenkorb hinzufügt.

Hier ist mein Stück Javascript-Code

function addComboProductToCart(ids) { 
     var arrayOfStrings = ids.split(','); 
     for (var i = 0; i < arrayOfStrings.length; i++) { 
      AjaxCart.addproducttocart_catalog('/addproducttocart/catalog/' + arrayOfStrings[i] + '/1/1'); 
     } 
    } 

Aber es wird nicht einen einzigen Fehler zu zeigen. Wo ist das Problem?

Antwort

3

Beim ersten müssen Sie wie unten in public.ajaxcart.js ändern, da es auf jedem ein Ajax-Aufruf ist In der Warenkorb wir es async:false dafür festlegen müssen, müssen Sie einen Parameter async für mehr klar zu sehen, genannt hinzufügen bei Temperaturen unterhalb Code

//add a parameter async 
    addproducttocart_catalog: function (urladd,async) { 
     if (this.loadWaiting != false) { 
      return; 
     } 
     this.setLoadWaiting(true); 

     $.ajax({ 
      cache: false, 
      async:async, 
      url: urladd, 
      type: 'post', 
      success: this.success_process, 
      complete: this.resetLoadWaiting, 
      error: this.ajaxFailure 
     }); 
    }, 

Jetzt false

function addComboProductToCart(ids) { 
    var arrayOfStrings = ids.split(','); 
    for (var i = 0; i < arrayOfStrings.length; i++) { 

     AjaxCart.addproducttocart_catalog('/addproducttocart/catalog/' + arrayOfStrings[i] + '/1/1',false); 

    } 
} 

Um zu wissen, nur einen Parameter von addding i Ihre Funktion geändert haben w Hut async:false tut freundlich finden this answer sowie für mehr Klärung

Lassen Sie mich wissen, wenn Sie weitere Hilfe benötigen.

+2

Yeah !!!!!, es funktioniert gut. Hut ab!! Aber ich habe eine Frage zu diesem Update auf NopCommerce Base-Datei. Da ich ein Plugin entwickle, so dass mein Plugin nicht auf die Basisdatei zugreifen kann ('public.ajaxcart.js'), muss ich daher die gleiche Funktion mit dieser Modifikation auf meine eigene Art und Weise im Skriptabschnitt schreiben ?? –

+2

Ohh ja, du musst diese Funktion für dein Plug-in hinzufügen Ich weiß, es ist eine schlechte Übung, den gleichen Code überall zu schreiben, aber ich werde analysieren, sobald ich irgendeine Lösung gefunden habe Ich werde dich updaten – Curiousdev

+0

Danke, dass du so nett bist. Ich suche auch nach einer Lösung. –

Verwandte Themen