0
안녕 얘들 아 내 코드입니다 :아약스 재귀 함수 작업 이상한
var ajax={
chiamata:function(target,url,opzioni){
if (!tools.array_key_exists('caricamento',opzioni)){
opzioni['caricamento']=1;
}
var dati=url.split('?');
$.ajax({
type: opzioni['type'],
url: url,
contentType:"application/x-www-form-urlencoded; charset=UTF-8",
data: dati[1],
dataType: "html",
success: function(msg){
if (opzioni['caricamento']!=0){
ajax.printLoading();
}
$(target).html(msg);
},
error: function(){
alert("Chiamata fallita!");
}
})
},
printLoading:function(){
var body="#colonnaDX";
$(body).ajaxStart(function(){
$(body).append('<div id="loading"><img src="graphic/IMAGE/spinner.gif"/>Loading...</div>');
})
.ajaxStop(function(){
$('#loading').remove();
});
}
},
//Recursive function
var object={
checkAzione:function(target,url,opzioni,interval){
if (!interval)
interval=60000;
ajax.chiamata(target,url,opzioni);
setTimeout(function() {
this.checkAzione(target,url,opzioni,interval);
}, interval);
}
}
$(document).ready(function(){
object.checkAzione(
'#colonnaDX',
'someactions.php',{
'caricamento':0
},
10000
);
})
나는 내가 할 수있는 더 나은로 문제를 설명하려고합니다 문서는 기능 "checkAzione"시작하고 있습니다 준비가되면 DB를 호출하는 등 일부 물건, 아약스 호출 의이 종류의 배열 "opzioni"그래서 'caricamento'플래그를 설정하는 스피너 등 모든 시각적로드가 필요하지 않습니다 : 0 ('로드 중': 0 같은) 그냥 내 확인 아약스 객체가 무슨 뜻인지 알기 위해, 'caricamento'를 사용하여 몇 가지 아약스 호출을 할 때까지 작동합니다. 1, 그 순간부터 모든 재귀 함수에서 모든 아약스 호출이 "printLoading"을 호출합니다.
이벤트를 ajaxStop 및 ajaxStart에 바인딩하면 바인딩 한 요소를 제거하거나 해당 이벤트를 바인딩 해제 할 때까지 사라지지 않습니다. 로더를 표시하고 숨기려면 beforeSend 및 complete를 사용하는 것이 좋습니다. –