Неопределенная функция при изменении синхронизации ajax - PullRequest
0 голосов
/ 21 июня 2019

Я преобразовываю функцию, которая использовалась для загрузки синхронного запроса AJAX, в getDesign.php. getDesign.php запрашивает некоторые изображения, которые затем отображаются на экране с помощью функции loadImages.

До изменения у меня было:

      $d.ajax({
            type: "POST",
            url: "getDesign.php",
            data: {design : 1234,
                   type: ""
                    },      
            dataType: "json",
            async: false,
            success: function(data) {               
             }
      });

loadImages() { // loads images }

Я сейчас попытался изменить это, так как я понимаю, что асинхронная часть теперь устарела. Логика должна быть прежней - то есть вызвать функцию ajax, а затем, когда она что-то вернула, вызвать функцию loadImages. Я не могу понять, почему функция "getDesign" выглядит как неопределенная, когда я загружаю скрипт. Пожалуйста, кто-нибудь может взглянуть и посмотреть, что я делаю не так?

var $d = jQuery.noConflict();

function loadImages()
{
 // loads images
}

 $d(document).ready(function() {

      var getDesign = function() {  
          $d.ajax({
                type: "POST",
                url: "getDesign.php",
                data: {design : 1234,
                       type: ""
                        },      
                dataType: "json",
                success: function(data) {               
                 }
          });
      };      

      getDesign().done(loadImages());
  });

Заранее большое спасибо!

1 Ответ

1 голос
/ 21 июня 2019

Ваш getDesign не возвращает обещание, лучше возвращает неопределенное. Для этого достаточно добавить возврат:

var $d = jQuery.noConflict();

function loadImages()
{
    // loads images
}

$d(document).ready(function() {

    var getDesign = function() {
        return $d.ajax({   // <-----  RETURN   HERE
            type: "POST",
            url: "getDesign.php",
            data: {design : 1234,
                type: ""
            },
            dataType: "json",
            success: function(data) {
            }
        });
    };

    getDesign().done(loadImages);
});

Другая ошибка в этой строке:

getDesign().done(loadImages());
                           ^^

изменить его на:

getDesign().done(loadImages);

Для .done () требуется doneCallbacks , а не результат выполнения вашей функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...