var destino = '#myContainer';
var file = 'my-file.html'; //file exists in folder.
var seccion = 'myTarget'; //
var nivel = 1; // #myTarget_1 exists in document
$('.load').show();
console.log('before');
$(destino).load('/'+file+' #'+seccion+'_'+nivel, function(response, status, xhr){
$('.load').hide();
console.log(response);
console.log(status);
}
console.log('done');
日志输出:
before
done
为什么这可能不会返回任何内容?没有错误或内容。如果有错误,我可以以某种方式冻结它吗?
答案 0 :(得分:2)
使用.get()
代替.load()
。正如我已经理解了.load()
函数,它将指定的结果直接粘贴到定义的节点。没有必要的回调功能。
<强>负载示例:强>
$('#result').load('ajax/test.html#whatever');
此页面上的内容ID #whatever将粘贴到当前页面的#result。
获取-示例:强>
var url = '/' + file;
$.get(url , function(data) {
$('.load').hide();
console.log($(data).find('#' + seccion + '_' + nivel));
});
答案 1 :(得分:1)
根据上面的评论,您要调用的元素$.load()
是动态命名的。因此,请确保在执行加载之前元素存在。 e.g。
if($(destino)) {
$(destino).load();
} else {
console.log(destino + ' does not exist');
}
替代方法是按@Armin说的那样,并使用$.get()
然后$.appendTo()
作为成功回调。