2014-05-31 5 views
0

Я пытаюсь вызвать функцию из обработчика успеха AJAX, но игнорируетсявызов функции в Ajax успеха

$.ajax({ 
    url: '../ajax/create_audit_standard_carosel.php', 
    type:'POST', 
    data: 'audit_id='+audit_id+'&user_id='+user_id, 
    dataType: 'json', 
    success: function(response){ 
     $('#num').html(response.standards_count); 
     $('#standards_list').html(response.output); 
      jQuery(function($) { 
       $("#selected_standards").touchCarousel({ 
        itemsPerPage: 4,    
        scrollbar: true, 
        scrollbarAutoHide: true, 
        scrollbarTheme: "dark",    
        pagingNav: false, 
        snapToItems: true, 
        scrollToLast: true, 
        useWebkit3d: true,    
        loopItems: false   
       }); 
      }); 
    }, // End of success function of ajax form 
    error:function (xhr, ajaxOptions, thrownError){ 
     alert(thrownError); 
    } 
}); // End of ajax call 

ответы правильны и содержание #standards_list изменяются с правильным содержанием так Я знаю, что вызов AJAX работает правильно, но функция в вызове успеха полностью игнорируется.

+0

именно то, что укомплектовать игнорировать? Вы сделали какой-нибудь console.log? – bestprogrammerintheworld

+0

изображения загружаются на сервер, которые отображаются в списке, а макет оформляется функцией карусели. Изображения загружаются в порядке, отображаются в списке, но поскольку функция карусели не загружает карусель, она не написана правильно. Если я вручную обновляю страницу, функция загрузки карусели загружается, потому что она также находится на странице – tatty27

+0

Почему 'jQuery (function ($) {' ...? – CBroe

ответ

1

Если вы имеете в виду функцию, начинающуюся непосредственно после того, как вы обновляете элемент #standards_list, это связано с тем, что вы пытаетесь привязать к событию, которое уже давно запущено.

Передача функции глобальной функции jQuery является ярлыком для привязки к событию document.ready. Это событие запускается при загрузке страницы и не будет срабатывать снова в результате вызова AJAX.

Просто удалите функцию оберточную и вызвать метод touchCarousel после обновления #standards_list element, например:

$.ajax({ 
    url: '../ajax/create_audit_standard_carosel.php', 
    type:'POST', 
    data: 'audit_id='+audit_id+'&user_id='+user_id, 
    dataType: 'json', 
    success: function(response){ 
     $('#num').html(response.standards_count); 
     $('#standards_list').html(response.output); 
     $("#selected_standards").touchCarousel({ 
      itemsPerPage: 4,    
      scrollbar: true, 
      scrollbarAutoHide: true, 
      scrollbarTheme: "dark",    
      pagingNav: false, 
      snapToItems: true, 
      scrollToLast: true, 
      useWebkit3d: true,    
      loopItems: false   
     }); 
    }, // End of success function of ajax form 
    error:function (xhr, ajaxOptions, thrownError){ 
     alert(thrownError); 
    } 
}); // End of ajax call` 
+0

Ваше объяснение здесь неверно. Если вы вызываете '.ready()' jQuery после его запуска, он просто вызовет ваш обратный вызов сразу же, он назовет его. Тем не менее, нет причин для переноса этого кода в готовый jQuery логика вообще, потому что документ уже загружен - хотя я не вижу, как это фактически вызывает проблему OP. – jfriend00

+0

Обычно да, привязка к событию готовности после того, как событие запущено, вызовет функцию привязки, которая будет вызываться немедленно, но там должно быть что-то в том, как обрабатывается ответ или событие AJAX, что мешает ему – danwellman

Смежные вопросы