2013-09-29 3 views
0

нормально у меня есть это:объединить две функции ajax?

/******AJAX SUBPAGES ACADEMIES****/ 
coachesLinks.click(function (e) { 
    e.preventDefault(); 
}); 
coachesLinks.click(function (e) { 
      var $el = jQuery(this); 
      var URL = $el.attr('href'); 
      var URL = URL + " .main"; 
    jQuery(contentTwo).show('slow').load(URL, function() { 
     scrollToAnchor('content_two'); 
     ajaxloader('.academy_coaches_readmore'); 
     accordion(); 
     $('.main').css('overflow', 'visible'); 
     $(contentTwo).css('overflow', 'visible'); 
     jQuery('#content_two .back').on('click', function() { 
      jQuery(this).hide('slow'); 
      if (contentTwo.is(':hidden')) { 
       jQuery('#content_two .back').hide(); 
      } else { 
       contentTwo.hide('slow'); 
       jQuery(contentmain).show('slow'); 
       jQuery(contentmain).css('overflow', 'visible'); 
       scrollToAnchor('access'); 
      } 
     }); 

    }); 
    $(contentmain).hide('slow'); 
}); 

и это:

function ajaxloader(myselector) { 
     internalLinks = jQuery(myselector); 
     internalLinks.click(function (e) { 
      e.preventDefault(); 
     }); 
     internalLinks.click(function (e) { 
      var $el = jQuery(this); 
      var URL = $el.attr('href'); 
      var URL = URL + " .main"; 
      jQuery(contentTwo).show('slow').load(URL, function() { 
       scrollToAnchor('content_two'); 
       $('.main').css('overflow', 'visible'); 
       $(contentTwo).css('overflow', 'visible'); 
       jQuery('#content_two .back').on('click', function() { 
        jQuery(this).hide('slow'); 

        if (contentTwo.is(':hidden')) { 
         jQuery(contenttwoback).hide(); 
        } else { 
         contentTwo.hide('slow'); 
         jQuery(contentmain).show('slow'); 
         jQuery(contentmain).css('overflow', 'visible').delay(100); 
         scrollToAnchor('access'); 

        } 
       }); 

      }); 
      $(contenttwoback).show('slow'); 
      $(contentmain).hide('slow'); 
     }); 
} 

с этими переменными:

/******variables******************/ 
      var contentmain = jQuery('#content > .main'); 
      var contentTwo = jQuery('#content_two'); 
      var siteURL = 'http://' + top.location.host.toString(); 
      var coachesLinks = jQuery(' .academy_readmore'); 

Я звоню вторую функцию, как так:

/******AJAX SUBPAGES SUBMENU FUNCTION****/ 
ajaxloader('#submenunav ul li a'); 
/******AJAX SUBPAGES COACHES****/ 
ajaxloader('#accordion .coaches_readmore'); 
/******AJAX LESSONS***/ 
ajaxloader('#accordion .lessons_readmore'); 

Что отлично работает с моим вопросом: как вызвать вторую функцию с вложенным ajax в качестве параметра? что-то вроде этого (который не работает):

ajaxloader('#accordion .lessons_readmore' ajaxloader('.academy_coaches_readmore')); 

Вложение второй нагрузки АЯКС внутри первого загрузчика AJAX ?? Крис полная копия кода здесь: http://jsfiddle.net/JGVEb/

+0

ОК, а не просто downvoting могли бы вы предоставить некоторую обратную связь относительно того, что случилось с вопросом я пытаюсь imrpove мой код и понять, как передать функцию в качестве параметра функции ... – vimes1984

ответ

1

ли вы имеете в виду, что вы хотите, чтобы эти запросы AJAX должны быть выполнены в последовательном, так что вторая одна происходит только после того, как первый один заканчивает?

Вы можете указать функцию обратного вызова в качестве параметра в своей функции. Что-то вроде этого:

function ajaxloader(myselector, callback) { 
    // some code 
    jQuery(contentTwo).show('slow').load(URL, function() { 
     // more code 

     if (callback) { callback(); } 
    }); 
}; 

Таким образом, он будет вызывать функцию обратного вызова после того, как он закончил с запросом AJAX. Вы бы затем вызвать его, как и любой другой функции JQuery, которая имеет функцию обратного вызова:

ajaxloader('#accordion .lessons_readmore', function() { 
    ajaxloader('.academy_coaches_readmore')); 
}); 
+0

Да, это именно то, что я имею в виду, я попытался ее реализовать, но обратный вызов efuses, чтобы применить ajax ко второму загрузку, моя проблема заключается в том, что я загружаю ajax страницу, которая затем имеет ссылку, которую я хочу загрузить с ajax снова ... new fiddle: http://jsfiddle.net/JGVEb/1/ – vimes1984

+0

Я пытаюсь объединить все вложенные запросы ajax в одну функцию. .. – vimes1984

+0

@ vimes1984: В самом деле непонятно, в чем проблема. И это jsFiddle на самом деле ничего не демонстрирует. Возможно, вы можете удалить несвязанный код и предоставить минимальный рабочий пример только этой проблемы? – David

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