简体   繁体   English

在 ajax 调用完成后执行 function

[英]Execute function after ajax call finished

I know, this was asked several times on SO (eg here ), but nothing worked for me.我知道,这在 SO 上被问了好几次(例如这里),但对我没有任何帮助。

I have a JSON Import via ajax.我有一个 JSON 通过 ajax 导入。 This imports data for a slick slider.这将导入光滑 slider 的数据。 So the slick slider should be initialized after the ajax import finished.所以光滑的 slider 应该在 ajax 导入完成后初始化。

My Code:我的代码:

  // Import Ticker
  $.ajax({
      url: '/de/data/data.json',
      type: 'GET',
      datatype: 'json'
  }).success(function (data) {
      for (var i = 0; i < data.length; i++) {
          var obj = data[i];
          $('section.ticker .slider').append(`
            <div class="slide">1</div>
            <div class="slide">2</div>
            <div class="slide">3</div>
          `)};

      $(document).on('ready', function() {
        $('.slider').slick({
            infinite: true,
            slidesToShow: 3,
            slidesToScroll: 3
        });
      });

      // Error handler
      }).error(function (err) {
          console.log(err);
      })

I also tried:我也试过:

  }).success(function (data) {
      for (var i = 0; i < data.length; i++) {
          var obj = data[i];
          $('section.ticker .slider').append(`
            <div class="slide">1</div>
            ...
          `)};
      }.complete: function (data) {
        $('.slider').slick({
          infinite: ...
        });
      }).error(function (err) {
          console.log(err);
      })

Or this:或这个:

$( document ).ajaxStop(function() {
  $('.slider').slick({
     infinite: ...
  });
});

Please remove slick initialisation from $(document).on('ready',function(){});请从$(document).on('ready',function(){});中删除光滑的初始化。

Your code will look like你的代码看起来像

$.ajax({
      url: '/de/data/data.json',
      type: 'GET',
      datatype: 'json'
  }).success(function (data) {
      for (var i = 0; i < data.length; i++) {
          var obj = data[i];
          $('section.ticker .slider').append(`
            <div class="slide">1</div>
            <div class="slide">2</div>
            <div class="slide">3</div>
          `)};

        $('.slider').slick({
            infinite: true,
            slidesToShow: 3,
            slidesToScroll: 3
        });

      // Error handler
      }).error(function (err) {
          console.log(err);
  })

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM