我遇到了我创建的以下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.');
});
});
}