setInterval не работает в jquery - PullRequest
       22

setInterval не работает в jquery

1 голос
/ 08 февраля 2012

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

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 ]

4 голосов
/ 08 февраля 2012

Определите функцию снаружи из 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);
});
1 голос
/ 08 февраля 2012

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

Пример :

setInterval(ajaxcall, 1000);

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

Пример :

setInterval("ajaxcall()", 1000);

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

0 голосов
/ 08 февраля 2012

или используйте код ниже

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

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

или используйте это

setInterval(ajaxcall, 1000);

или используйте это

setInterval("ajaxcall()", 1000);

Да, это помогает

0 голосов
/ 08 февраля 2012

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

...