循环遍历DOM元素以进行.ajax()调用,范围问题与request.done()

时间:2016-02-26 02:49:40

标签: javascript jquery ajax

我遇到了我创建的以下javascript函数的问题。它只是循环遍历所有' div.ajax'元素,从data-url属性中获取URL,并应使用ajax调用来加载应该插入元素的新一堆HTML。

问题是,我似乎无法访问这个'这个' request.done函数内的变量(包含属性)(范围问题)。我试图附上这个'这个'变量到一个全局变量(document.this_element),但这不起作用,因为有时会同时处理多个ajax调用(因此内容被插入到错误的元素中)。

我不能在这里使用.load()jquery函数,因为我需要一些仅适用于.ajax()的附加选项。有谁知道我怎么能解决这个问题?谢谢!

//function to reload several blocks with ajax-injected data
function reload_ajax(){
   //foreach block
   $('div.ajax').each(function(index){

      //get url
      var url = $(this).attr('data-action');

      //make the block empty, add ajax loader image with CSS class
      $(this).addClass('not-loaded').html('');

      //make request
      var request = $.ajax({url: url, type: 'GET',data: {}, dataType: 'html'});

      //if request = done
      request.done(function(response){
         //SCOPE PROBLEM, 'this' element is not known
         $(this).removeClass('not-loaded').html(response);
      });

      //if request = failed
      request.fail(function(jqXHR, textstatus){
         //SCOPE PROBLEM, 'this' element is not known
         $(this).removeClass('not-loaded').html('<strong>Error:</strong> Could not load data.');
      });
   });
}

0 个答案:

没有答案