Magento 2 - Slick slider function not working
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ margin-bottom:0;
}
Slick slider
function is not working after ajax
response, This is the order of my code. Firstly I got a product collection response, Then I wrote a slick slider function. but slider function is not working.
This is dom element in phtml file in which ajax response appear
<div class="category-products clearfix products wrapper grid products-grid">
<ol class="products list items product-items featured-collector featured-collector_<?php echo $categoryid; ?>">
</ol>
</div>
This is my js code
require([
'jquery'
], function($){
jQuery.ajax({
url: "/manufacturerpages/index/collection",
type: "POST",
data: "id= <?php echo $manpagedataarr['page_id']; ?>&categoryid=<?php echo $categoryid; ?>&carouselorder=<?php echo $manpagedataarr['carouselorder']; ?>&collection_type=<?php echo $manpagedataarr['collection_type']; ?>&product_ids=<?php echo $manpagedataarr['product_ids']; ?>&manufacturer=<?php echo $manpagedataarr['manufacturer']; ?>",
success: function (res) {
//console.log(res);
var result = jQuery('.product-items', res).html();
var undefined = false;
if(typeof result === 'undefined'){
result = res;
undefined = true;
}
jQuery(".featured-collector_<?php echo $categoryid; ?>").html(result);
jQuery(".landing-featured .ajax_loading").hide();
jQuery( "form[data-role='tocart-form']" ).catalogAddToCart();
}
});
});
require([
'jquery',
'magiccart/slick',
'alothemes'
], function($, slick){
jQuery('.featured-collector_<?php echo $categoryid; ?>').slick({
dots: false,
infinite: true,
slidesToShow: 6,
slidesToScroll: 2,
arrows: true,
autoplay: false,
draggable: true,
speed: 300
});
});
magento2 magento2.2 magento2.3 ajax slick
add a comment |
Slick slider
function is not working after ajax
response, This is the order of my code. Firstly I got a product collection response, Then I wrote a slick slider function. but slider function is not working.
This is dom element in phtml file in which ajax response appear
<div class="category-products clearfix products wrapper grid products-grid">
<ol class="products list items product-items featured-collector featured-collector_<?php echo $categoryid; ?>">
</ol>
</div>
This is my js code
require([
'jquery'
], function($){
jQuery.ajax({
url: "/manufacturerpages/index/collection",
type: "POST",
data: "id= <?php echo $manpagedataarr['page_id']; ?>&categoryid=<?php echo $categoryid; ?>&carouselorder=<?php echo $manpagedataarr['carouselorder']; ?>&collection_type=<?php echo $manpagedataarr['collection_type']; ?>&product_ids=<?php echo $manpagedataarr['product_ids']; ?>&manufacturer=<?php echo $manpagedataarr['manufacturer']; ?>",
success: function (res) {
//console.log(res);
var result = jQuery('.product-items', res).html();
var undefined = false;
if(typeof result === 'undefined'){
result = res;
undefined = true;
}
jQuery(".featured-collector_<?php echo $categoryid; ?>").html(result);
jQuery(".landing-featured .ajax_loading").hide();
jQuery( "form[data-role='tocart-form']" ).catalogAddToCart();
}
});
});
require([
'jquery',
'magiccart/slick',
'alothemes'
], function($, slick){
jQuery('.featured-collector_<?php echo $categoryid; ?>').slick({
dots: false,
infinite: true,
slidesToShow: 6,
slidesToScroll: 2,
arrows: true,
autoplay: false,
draggable: true,
speed: 300
});
});
magento2 magento2.2 magento2.3 ajax slick
any console errors?
– jafar pinjar
May 8 at 10:00
There is no any error in my console.
– Muhammad Anas
May 8 at 10:01
where you are writing js code? in phtml or separate js file?
– jafar pinjar
May 8 at 10:03
add a comment |
Slick slider
function is not working after ajax
response, This is the order of my code. Firstly I got a product collection response, Then I wrote a slick slider function. but slider function is not working.
This is dom element in phtml file in which ajax response appear
<div class="category-products clearfix products wrapper grid products-grid">
<ol class="products list items product-items featured-collector featured-collector_<?php echo $categoryid; ?>">
</ol>
</div>
This is my js code
require([
'jquery'
], function($){
jQuery.ajax({
url: "/manufacturerpages/index/collection",
type: "POST",
data: "id= <?php echo $manpagedataarr['page_id']; ?>&categoryid=<?php echo $categoryid; ?>&carouselorder=<?php echo $manpagedataarr['carouselorder']; ?>&collection_type=<?php echo $manpagedataarr['collection_type']; ?>&product_ids=<?php echo $manpagedataarr['product_ids']; ?>&manufacturer=<?php echo $manpagedataarr['manufacturer']; ?>",
success: function (res) {
//console.log(res);
var result = jQuery('.product-items', res).html();
var undefined = false;
if(typeof result === 'undefined'){
result = res;
undefined = true;
}
jQuery(".featured-collector_<?php echo $categoryid; ?>").html(result);
jQuery(".landing-featured .ajax_loading").hide();
jQuery( "form[data-role='tocart-form']" ).catalogAddToCart();
}
});
});
require([
'jquery',
'magiccart/slick',
'alothemes'
], function($, slick){
jQuery('.featured-collector_<?php echo $categoryid; ?>').slick({
dots: false,
infinite: true,
slidesToShow: 6,
slidesToScroll: 2,
arrows: true,
autoplay: false,
draggable: true,
speed: 300
});
});
magento2 magento2.2 magento2.3 ajax slick
Slick slider
function is not working after ajax
response, This is the order of my code. Firstly I got a product collection response, Then I wrote a slick slider function. but slider function is not working.
This is dom element in phtml file in which ajax response appear
<div class="category-products clearfix products wrapper grid products-grid">
<ol class="products list items product-items featured-collector featured-collector_<?php echo $categoryid; ?>">
</ol>
</div>
This is my js code
require([
'jquery'
], function($){
jQuery.ajax({
url: "/manufacturerpages/index/collection",
type: "POST",
data: "id= <?php echo $manpagedataarr['page_id']; ?>&categoryid=<?php echo $categoryid; ?>&carouselorder=<?php echo $manpagedataarr['carouselorder']; ?>&collection_type=<?php echo $manpagedataarr['collection_type']; ?>&product_ids=<?php echo $manpagedataarr['product_ids']; ?>&manufacturer=<?php echo $manpagedataarr['manufacturer']; ?>",
success: function (res) {
//console.log(res);
var result = jQuery('.product-items', res).html();
var undefined = false;
if(typeof result === 'undefined'){
result = res;
undefined = true;
}
jQuery(".featured-collector_<?php echo $categoryid; ?>").html(result);
jQuery(".landing-featured .ajax_loading").hide();
jQuery( "form[data-role='tocart-form']" ).catalogAddToCart();
}
});
});
require([
'jquery',
'magiccart/slick',
'alothemes'
], function($, slick){
jQuery('.featured-collector_<?php echo $categoryid; ?>').slick({
dots: false,
infinite: true,
slidesToShow: 6,
slidesToScroll: 2,
arrows: true,
autoplay: false,
draggable: true,
speed: 300
});
});
magento2 magento2.2 magento2.3 ajax slick
magento2 magento2.2 magento2.3 ajax slick
edited May 14 at 5:59
Muhammad Hasham
4,190102576
4,190102576
asked May 8 at 9:50
Muhammad AnasMuhammad Anas
1,2233526
1,2233526
any console errors?
– jafar pinjar
May 8 at 10:00
There is no any error in my console.
– Muhammad Anas
May 8 at 10:01
where you are writing js code? in phtml or separate js file?
– jafar pinjar
May 8 at 10:03
add a comment |
any console errors?
– jafar pinjar
May 8 at 10:00
There is no any error in my console.
– Muhammad Anas
May 8 at 10:01
where you are writing js code? in phtml or separate js file?
– jafar pinjar
May 8 at 10:03
any console errors?
– jafar pinjar
May 8 at 10:00
any console errors?
– jafar pinjar
May 8 at 10:00
There is no any error in my console.
– Muhammad Anas
May 8 at 10:01
There is no any error in my console.
– Muhammad Anas
May 8 at 10:01
where you are writing js code? in phtml or separate js file?
– jafar pinjar
May 8 at 10:03
where you are writing js code? in phtml or separate js file?
– jafar pinjar
May 8 at 10:03
add a comment |
2 Answers
2
active
oldest
votes
Actually one of possible reason why it may not properly working because you don't add the slick
after ajax success response. You just need to replace this, with your js code
require([
'jquery',
'magiccart/slick',
'alothemes'
], function($, slick){
jQuery.ajax({
url: "/manufacturerpages/index/collection",
type: "POST",
data: "id= <?php echo $manpagedataarr['page_id']; ?>&categoryid=<?php echo $categoryid; ?>&carouselorder=<?php echo $manpagedataarr['carouselorder']; ?>&collection_type=<?php echo $manpagedataarr['collection_type']; ?>&product_ids=<?php echo $manpagedataarr['product_ids']; ?>&manufacturer=<?php echo $manpagedataarr['manufacturer']; ?>",
success: function (res) {
//console.log(res);
var result = jQuery('.product-items', res).html();
var undefined = false;
if(typeof result === 'undefined'){
result = res;
undefined = true;
}
jQuery(".featured-collector_<?php echo $categoryid; ?>").html(result);
jQuery(".landing-featured .ajax_loading").hide();
// ******This is your slick code***********
jQuery('.featured-collector_<?php echo $categoryid; ?>').slick({
dots: false,
infinite: true,
slidesToShow: 6,
slidesToScroll: 2,
arrows: true,
autoplay: false,
draggable: true,
speed: 300
});
jQuery( "form[data-role='tocart-form']" ).catalogAddToCart();
}
});
});
I hope this will help
let me try this, come back to you
– Muhammad Anas
May 8 at 10:08
Don't think it is as easy :)
– Muhammad Anas
May 8 at 10:14
@MuhammadAnas Adding to the answer, Might be take as future reference, In javascript code is execute sequentially, or line by line so in after Ajax call, request sent to the server but it not guarantee that result will come before next line of code execute, so better to wait for dependent code (in your case slick), so need to add code in success callback function which will execute after response came from server.
– Kanhaiya lal
May 10 at 6:31
add a comment |
It's likely your AJAX request is completing AFTER the slider is initialised, see if adding your Slick JS to your success callback helps:
require([
'jquery'
], function($){
jQuery.ajax({
url: "/manufacturerpages/index/collection",
type: "POST",
data: "id= <?php echo $manpagedataarr['page_id']; ?>&categoryid=<?php echo $categoryid; ?>&carouselorder=<?php echo $manpagedataarr['carouselorder']; ?>&collection_type=<?php echo $manpagedataarr['collection_type']; ?>&product_ids=<?php echo $manpagedataarr['product_ids']; ?>&manufacturer=<?php echo $manpagedataarr['manufacturer']; ?>",
success: function (res) {
//console.log(res);
var result = jQuery('.product-items', res).html();
var undefined = false;
if(typeof result === 'undefined'){
result = res;
undefined = true;
}
jQuery(".featured-collector_<?php echo $categoryid; ?>").html(result);
jQuery(".landing-featured .ajax_loading").hide();
jQuery( "form[data-role='tocart-form']" ).catalogAddToCart();
jQuery('.featured-collector_<?php echo $categoryid; ?>').slick({
dots: false,
infinite: true,
slidesToShow: 6,
slidesToScroll: 2,
arrows: true,
autoplay: false,
draggable: true,
speed: 300
});
}
});
});
If so I recommend you split your JS up into Require JS modules rather than inlining it inside a template then you can keep them separate and still call it in your success callback. I see JS inside PHTML as a bad practice, it makes maintenance much harder and I think it prevents your JS from being cached.
your answer is also correct but I can mark anyone answer correct. Still +1 for your effort. Thanks :)
– Muhammad Anas
May 8 at 10:13
You're welcome :D
– Ben Crook
May 8 at 10:18
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "479"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f273822%2fmagento-2-slick-slider-function-not-working%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
Actually one of possible reason why it may not properly working because you don't add the slick
after ajax success response. You just need to replace this, with your js code
require([
'jquery',
'magiccart/slick',
'alothemes'
], function($, slick){
jQuery.ajax({
url: "/manufacturerpages/index/collection",
type: "POST",
data: "id= <?php echo $manpagedataarr['page_id']; ?>&categoryid=<?php echo $categoryid; ?>&carouselorder=<?php echo $manpagedataarr['carouselorder']; ?>&collection_type=<?php echo $manpagedataarr['collection_type']; ?>&product_ids=<?php echo $manpagedataarr['product_ids']; ?>&manufacturer=<?php echo $manpagedataarr['manufacturer']; ?>",
success: function (res) {
//console.log(res);
var result = jQuery('.product-items', res).html();
var undefined = false;
if(typeof result === 'undefined'){
result = res;
undefined = true;
}
jQuery(".featured-collector_<?php echo $categoryid; ?>").html(result);
jQuery(".landing-featured .ajax_loading").hide();
// ******This is your slick code***********
jQuery('.featured-collector_<?php echo $categoryid; ?>').slick({
dots: false,
infinite: true,
slidesToShow: 6,
slidesToScroll: 2,
arrows: true,
autoplay: false,
draggable: true,
speed: 300
});
jQuery( "form[data-role='tocart-form']" ).catalogAddToCart();
}
});
});
I hope this will help
let me try this, come back to you
– Muhammad Anas
May 8 at 10:08
Don't think it is as easy :)
– Muhammad Anas
May 8 at 10:14
@MuhammadAnas Adding to the answer, Might be take as future reference, In javascript code is execute sequentially, or line by line so in after Ajax call, request sent to the server but it not guarantee that result will come before next line of code execute, so better to wait for dependent code (in your case slick), so need to add code in success callback function which will execute after response came from server.
– Kanhaiya lal
May 10 at 6:31
add a comment |
Actually one of possible reason why it may not properly working because you don't add the slick
after ajax success response. You just need to replace this, with your js code
require([
'jquery',
'magiccart/slick',
'alothemes'
], function($, slick){
jQuery.ajax({
url: "/manufacturerpages/index/collection",
type: "POST",
data: "id= <?php echo $manpagedataarr['page_id']; ?>&categoryid=<?php echo $categoryid; ?>&carouselorder=<?php echo $manpagedataarr['carouselorder']; ?>&collection_type=<?php echo $manpagedataarr['collection_type']; ?>&product_ids=<?php echo $manpagedataarr['product_ids']; ?>&manufacturer=<?php echo $manpagedataarr['manufacturer']; ?>",
success: function (res) {
//console.log(res);
var result = jQuery('.product-items', res).html();
var undefined = false;
if(typeof result === 'undefined'){
result = res;
undefined = true;
}
jQuery(".featured-collector_<?php echo $categoryid; ?>").html(result);
jQuery(".landing-featured .ajax_loading").hide();
// ******This is your slick code***********
jQuery('.featured-collector_<?php echo $categoryid; ?>').slick({
dots: false,
infinite: true,
slidesToShow: 6,
slidesToScroll: 2,
arrows: true,
autoplay: false,
draggable: true,
speed: 300
});
jQuery( "form[data-role='tocart-form']" ).catalogAddToCart();
}
});
});
I hope this will help
let me try this, come back to you
– Muhammad Anas
May 8 at 10:08
Don't think it is as easy :)
– Muhammad Anas
May 8 at 10:14
@MuhammadAnas Adding to the answer, Might be take as future reference, In javascript code is execute sequentially, or line by line so in after Ajax call, request sent to the server but it not guarantee that result will come before next line of code execute, so better to wait for dependent code (in your case slick), so need to add code in success callback function which will execute after response came from server.
– Kanhaiya lal
May 10 at 6:31
add a comment |
Actually one of possible reason why it may not properly working because you don't add the slick
after ajax success response. You just need to replace this, with your js code
require([
'jquery',
'magiccart/slick',
'alothemes'
], function($, slick){
jQuery.ajax({
url: "/manufacturerpages/index/collection",
type: "POST",
data: "id= <?php echo $manpagedataarr['page_id']; ?>&categoryid=<?php echo $categoryid; ?>&carouselorder=<?php echo $manpagedataarr['carouselorder']; ?>&collection_type=<?php echo $manpagedataarr['collection_type']; ?>&product_ids=<?php echo $manpagedataarr['product_ids']; ?>&manufacturer=<?php echo $manpagedataarr['manufacturer']; ?>",
success: function (res) {
//console.log(res);
var result = jQuery('.product-items', res).html();
var undefined = false;
if(typeof result === 'undefined'){
result = res;
undefined = true;
}
jQuery(".featured-collector_<?php echo $categoryid; ?>").html(result);
jQuery(".landing-featured .ajax_loading").hide();
// ******This is your slick code***********
jQuery('.featured-collector_<?php echo $categoryid; ?>').slick({
dots: false,
infinite: true,
slidesToShow: 6,
slidesToScroll: 2,
arrows: true,
autoplay: false,
draggable: true,
speed: 300
});
jQuery( "form[data-role='tocart-form']" ).catalogAddToCart();
}
});
});
I hope this will help
Actually one of possible reason why it may not properly working because you don't add the slick
after ajax success response. You just need to replace this, with your js code
require([
'jquery',
'magiccart/slick',
'alothemes'
], function($, slick){
jQuery.ajax({
url: "/manufacturerpages/index/collection",
type: "POST",
data: "id= <?php echo $manpagedataarr['page_id']; ?>&categoryid=<?php echo $categoryid; ?>&carouselorder=<?php echo $manpagedataarr['carouselorder']; ?>&collection_type=<?php echo $manpagedataarr['collection_type']; ?>&product_ids=<?php echo $manpagedataarr['product_ids']; ?>&manufacturer=<?php echo $manpagedataarr['manufacturer']; ?>",
success: function (res) {
//console.log(res);
var result = jQuery('.product-items', res).html();
var undefined = false;
if(typeof result === 'undefined'){
result = res;
undefined = true;
}
jQuery(".featured-collector_<?php echo $categoryid; ?>").html(result);
jQuery(".landing-featured .ajax_loading").hide();
// ******This is your slick code***********
jQuery('.featured-collector_<?php echo $categoryid; ?>').slick({
dots: false,
infinite: true,
slidesToShow: 6,
slidesToScroll: 2,
arrows: true,
autoplay: false,
draggable: true,
speed: 300
});
jQuery( "form[data-role='tocart-form']" ).catalogAddToCart();
}
});
});
I hope this will help
answered May 8 at 10:05
Muhammad HashamMuhammad Hasham
4,190102576
4,190102576
let me try this, come back to you
– Muhammad Anas
May 8 at 10:08
Don't think it is as easy :)
– Muhammad Anas
May 8 at 10:14
@MuhammadAnas Adding to the answer, Might be take as future reference, In javascript code is execute sequentially, or line by line so in after Ajax call, request sent to the server but it not guarantee that result will come before next line of code execute, so better to wait for dependent code (in your case slick), so need to add code in success callback function which will execute after response came from server.
– Kanhaiya lal
May 10 at 6:31
add a comment |
let me try this, come back to you
– Muhammad Anas
May 8 at 10:08
Don't think it is as easy :)
– Muhammad Anas
May 8 at 10:14
@MuhammadAnas Adding to the answer, Might be take as future reference, In javascript code is execute sequentially, or line by line so in after Ajax call, request sent to the server but it not guarantee that result will come before next line of code execute, so better to wait for dependent code (in your case slick), so need to add code in success callback function which will execute after response came from server.
– Kanhaiya lal
May 10 at 6:31
let me try this, come back to you
– Muhammad Anas
May 8 at 10:08
let me try this, come back to you
– Muhammad Anas
May 8 at 10:08
Don't think it is as easy :)
– Muhammad Anas
May 8 at 10:14
Don't think it is as easy :)
– Muhammad Anas
May 8 at 10:14
@MuhammadAnas Adding to the answer, Might be take as future reference, In javascript code is execute sequentially, or line by line so in after Ajax call, request sent to the server but it not guarantee that result will come before next line of code execute, so better to wait for dependent code (in your case slick), so need to add code in success callback function which will execute after response came from server.
– Kanhaiya lal
May 10 at 6:31
@MuhammadAnas Adding to the answer, Might be take as future reference, In javascript code is execute sequentially, or line by line so in after Ajax call, request sent to the server but it not guarantee that result will come before next line of code execute, so better to wait for dependent code (in your case slick), so need to add code in success callback function which will execute after response came from server.
– Kanhaiya lal
May 10 at 6:31
add a comment |
It's likely your AJAX request is completing AFTER the slider is initialised, see if adding your Slick JS to your success callback helps:
require([
'jquery'
], function($){
jQuery.ajax({
url: "/manufacturerpages/index/collection",
type: "POST",
data: "id= <?php echo $manpagedataarr['page_id']; ?>&categoryid=<?php echo $categoryid; ?>&carouselorder=<?php echo $manpagedataarr['carouselorder']; ?>&collection_type=<?php echo $manpagedataarr['collection_type']; ?>&product_ids=<?php echo $manpagedataarr['product_ids']; ?>&manufacturer=<?php echo $manpagedataarr['manufacturer']; ?>",
success: function (res) {
//console.log(res);
var result = jQuery('.product-items', res).html();
var undefined = false;
if(typeof result === 'undefined'){
result = res;
undefined = true;
}
jQuery(".featured-collector_<?php echo $categoryid; ?>").html(result);
jQuery(".landing-featured .ajax_loading").hide();
jQuery( "form[data-role='tocart-form']" ).catalogAddToCart();
jQuery('.featured-collector_<?php echo $categoryid; ?>').slick({
dots: false,
infinite: true,
slidesToShow: 6,
slidesToScroll: 2,
arrows: true,
autoplay: false,
draggable: true,
speed: 300
});
}
});
});
If so I recommend you split your JS up into Require JS modules rather than inlining it inside a template then you can keep them separate and still call it in your success callback. I see JS inside PHTML as a bad practice, it makes maintenance much harder and I think it prevents your JS from being cached.
your answer is also correct but I can mark anyone answer correct. Still +1 for your effort. Thanks :)
– Muhammad Anas
May 8 at 10:13
You're welcome :D
– Ben Crook
May 8 at 10:18
add a comment |
It's likely your AJAX request is completing AFTER the slider is initialised, see if adding your Slick JS to your success callback helps:
require([
'jquery'
], function($){
jQuery.ajax({
url: "/manufacturerpages/index/collection",
type: "POST",
data: "id= <?php echo $manpagedataarr['page_id']; ?>&categoryid=<?php echo $categoryid; ?>&carouselorder=<?php echo $manpagedataarr['carouselorder']; ?>&collection_type=<?php echo $manpagedataarr['collection_type']; ?>&product_ids=<?php echo $manpagedataarr['product_ids']; ?>&manufacturer=<?php echo $manpagedataarr['manufacturer']; ?>",
success: function (res) {
//console.log(res);
var result = jQuery('.product-items', res).html();
var undefined = false;
if(typeof result === 'undefined'){
result = res;
undefined = true;
}
jQuery(".featured-collector_<?php echo $categoryid; ?>").html(result);
jQuery(".landing-featured .ajax_loading").hide();
jQuery( "form[data-role='tocart-form']" ).catalogAddToCart();
jQuery('.featured-collector_<?php echo $categoryid; ?>').slick({
dots: false,
infinite: true,
slidesToShow: 6,
slidesToScroll: 2,
arrows: true,
autoplay: false,
draggable: true,
speed: 300
});
}
});
});
If so I recommend you split your JS up into Require JS modules rather than inlining it inside a template then you can keep them separate and still call it in your success callback. I see JS inside PHTML as a bad practice, it makes maintenance much harder and I think it prevents your JS from being cached.
your answer is also correct but I can mark anyone answer correct. Still +1 for your effort. Thanks :)
– Muhammad Anas
May 8 at 10:13
You're welcome :D
– Ben Crook
May 8 at 10:18
add a comment |
It's likely your AJAX request is completing AFTER the slider is initialised, see if adding your Slick JS to your success callback helps:
require([
'jquery'
], function($){
jQuery.ajax({
url: "/manufacturerpages/index/collection",
type: "POST",
data: "id= <?php echo $manpagedataarr['page_id']; ?>&categoryid=<?php echo $categoryid; ?>&carouselorder=<?php echo $manpagedataarr['carouselorder']; ?>&collection_type=<?php echo $manpagedataarr['collection_type']; ?>&product_ids=<?php echo $manpagedataarr['product_ids']; ?>&manufacturer=<?php echo $manpagedataarr['manufacturer']; ?>",
success: function (res) {
//console.log(res);
var result = jQuery('.product-items', res).html();
var undefined = false;
if(typeof result === 'undefined'){
result = res;
undefined = true;
}
jQuery(".featured-collector_<?php echo $categoryid; ?>").html(result);
jQuery(".landing-featured .ajax_loading").hide();
jQuery( "form[data-role='tocart-form']" ).catalogAddToCart();
jQuery('.featured-collector_<?php echo $categoryid; ?>').slick({
dots: false,
infinite: true,
slidesToShow: 6,
slidesToScroll: 2,
arrows: true,
autoplay: false,
draggable: true,
speed: 300
});
}
});
});
If so I recommend you split your JS up into Require JS modules rather than inlining it inside a template then you can keep them separate and still call it in your success callback. I see JS inside PHTML as a bad practice, it makes maintenance much harder and I think it prevents your JS from being cached.
It's likely your AJAX request is completing AFTER the slider is initialised, see if adding your Slick JS to your success callback helps:
require([
'jquery'
], function($){
jQuery.ajax({
url: "/manufacturerpages/index/collection",
type: "POST",
data: "id= <?php echo $manpagedataarr['page_id']; ?>&categoryid=<?php echo $categoryid; ?>&carouselorder=<?php echo $manpagedataarr['carouselorder']; ?>&collection_type=<?php echo $manpagedataarr['collection_type']; ?>&product_ids=<?php echo $manpagedataarr['product_ids']; ?>&manufacturer=<?php echo $manpagedataarr['manufacturer']; ?>",
success: function (res) {
//console.log(res);
var result = jQuery('.product-items', res).html();
var undefined = false;
if(typeof result === 'undefined'){
result = res;
undefined = true;
}
jQuery(".featured-collector_<?php echo $categoryid; ?>").html(result);
jQuery(".landing-featured .ajax_loading").hide();
jQuery( "form[data-role='tocart-form']" ).catalogAddToCart();
jQuery('.featured-collector_<?php echo $categoryid; ?>').slick({
dots: false,
infinite: true,
slidesToShow: 6,
slidesToScroll: 2,
arrows: true,
autoplay: false,
draggable: true,
speed: 300
});
}
});
});
If so I recommend you split your JS up into Require JS modules rather than inlining it inside a template then you can keep them separate and still call it in your success callback. I see JS inside PHTML as a bad practice, it makes maintenance much harder and I think it prevents your JS from being cached.
answered May 8 at 10:05
Ben CrookBen Crook
9,5812579
9,5812579
your answer is also correct but I can mark anyone answer correct. Still +1 for your effort. Thanks :)
– Muhammad Anas
May 8 at 10:13
You're welcome :D
– Ben Crook
May 8 at 10:18
add a comment |
your answer is also correct but I can mark anyone answer correct. Still +1 for your effort. Thanks :)
– Muhammad Anas
May 8 at 10:13
You're welcome :D
– Ben Crook
May 8 at 10:18
your answer is also correct but I can mark anyone answer correct. Still +1 for your effort. Thanks :)
– Muhammad Anas
May 8 at 10:13
your answer is also correct but I can mark anyone answer correct. Still +1 for your effort. Thanks :)
– Muhammad Anas
May 8 at 10:13
You're welcome :D
– Ben Crook
May 8 at 10:18
You're welcome :D
– Ben Crook
May 8 at 10:18
add a comment |
Thanks for contributing an answer to Magento Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f273822%2fmagento-2-slick-slider-function-not-working%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
any console errors?
– jafar pinjar
May 8 at 10:00
There is no any error in my console.
– Muhammad Anas
May 8 at 10:01
where you are writing js code? in phtml or separate js file?
– jafar pinjar
May 8 at 10:03