2012-02-08 3 views
1

Я не могу понять, почему его говорит ajaxcall() не существует, но $('button').click(function(){ ajaxcall(); }); работает просто отличноне setInterval работает в JQuery

var nameid = 1; 
$(document).ready(function(){ 
    $('button').click(function(){ 
      ajaxcall(); 
     }); 
    function ajaxcall(){ 
     $.get('mysqlquery.php?id='+nameid, function(data){ 
      $('#loadbox').append(data+' '); 
     }); 
     nameid++; 

    } 
    setInterval("ajaxcall",1000); 
}); 

Пожалуйста, помогите мне понять, почему, я думаю, что он должен делать с размаху Но я в тупике. (может быть время для разрыва)

ответ

4

Определим функцию вне из document.ready, а также использовать перегрузку setInterval, которая принимает функцию ссылки:

var nameid = 1; 

function ajaxcall() { 
    $.get('mysqlquery.php?id='+nameid, function(data){ 
     $('#loadbox').append(data+' '); 
    }); 
    nameid++; 
} 

$(document).ready(function(){ 
    $('button').click(function(){ 
      ajaxcall(); 
     }); 
    setInterval(ajaxcall,1000); 
}); 
+0

Спасибо сэр: D – Cjueden

+0

@Cjueden: Нет проблем! –

+0

Не могли бы вы объяснить, почему вам нужно вызывать функцию без '()' или у вас есть источник, чтобы найти эту информацию? – KhorneHoly

1

Звоните setInterval без кавычек для аргумента function. (Предпочтительный метод)

Пример:

setInterval(ajaxcall, 1000); 

Если вы вызываете его с кавычками, которые необходимо включать в круглые скобки. Но это заставляет eval() называться.

Пример:

setInterval("ajaxcall()", 1000); 

бывший является предпочтительным методом.

0

Удалить цитаты вокруг «ajaxcall», чтобы передать действительную функцию setInterval.

0

или использовать код ниже

заменить setInterval строку

setInterval(function() { 
$.get('mysqlquery.php?id='+nameid, function(data){ 
     $('#loadbox').append(data+' '); 
    }); 
    nameid++; 
}, 1000); 

или использовать его

setInterval(ajaxcall, 1000); 

или использовать этот

setInterval("ajaxcall()", 1000); 

hoep это помогает

Смежные вопросы