2012-01-17 41 views
2
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'); 

日誌輸出:jQuery。 .load()將不作迴應/狀態

before 
done 

爲什麼更多鈔票,這並不返回任何東西?沒有錯誤或內容。如果有錯誤,我能否以某種方式阻止錯誤發生?

+0

您的代碼不顯示變量'archivo'。這是一個錯字還是你打算使用'file'? – 2012-01-17 11:12:25

+0

你是對的我正在翻譯一些代碼,以英文爲更好的理解。謝謝 – 2012-01-17 11:15:00

+0

使用$ .ajaxSetup()來設置所需的回調。 – deostroll 2012-01-17 11:19:43

回答

1

基於上述意見,在其上調用$.load()元素是動態命名。因此,確保在執行加載之前存在元素。例如

if($(destino)) { 
    $(destino).load(); 
} else { 
    console.log(destino + ' does not exist'); 
} 

另一種方法是做的@Armin說,並使用$.get()然後$.appendTo()作爲成功回調。

+0

您調用的元素$ .load()是動態命名的;你的意思是#myContainer?如果是這樣,那是不正確的。靜態創建並命名爲 – 2012-01-17 11:57:53

+0

這將是我的猜測。如果負載從未運行,則表示選擇器正在返回空值。 – 2012-01-17 11:59:38

+0

這就是問題!!!!! $(destino).length返回0!至少現在我知道發生了什麼事情! – 2012-01-17 12:40:17

2

使用.get()代替​​。正如我所瞭解的​​函數,它將指定的結果直接粘貼到定義的節點。沒有必要的回調函數。

負載示例:

$('#result').load('ajax/test.html#whatever'); 

此頁面上的內容ID #whatever將被粘貼到當前頁面的#result。


獲取,例如:

var url = '/' + file; 
$.get(url , function(data) { 
    $('.load').hide(); 
    console.log($(data).find('#' + seccion + '_' + nivel)); 
}); 
+0

+1我總是使用'$ .get()' - 我發現它更容易。 – 2012-01-17 11:39:07