jQuery的。 .load()不会给出响应/状态

时间:2012-01-17 11:10:17

标签: javascript jquery debugging load

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

为什么这可能不会返回任何内容?没有错误或内容。如果有错误,我可以以某种方式冻结它吗?

2 个答案:

答案 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()作为成功回调。