2013-03-23 3 views
1

Я создал функцию JS, и теперь я хочу, чтобы JS функция называть себя только один раз, Мой кодCall функция только расслоение плотной раз в JavaScript

function view(str){ 

    $.ajax({ 
     type: "POST", 
     url: '<?php echo base_url()?>index.php/main/'+str+'/', 
     success: function(output_string){ 
     //i want to call function from here only once like view(str); 
     } 
    }); 
} 

. Как я могу это сделать? Спасибо заранее, В настоящее время он показывает мне петлю infinte.

+0

я зову эту функцию на якорь тегов мыши, как

ответ

1

Попробуйте добавить параметр в функцию, которая следит за подсчетом:

function view(str, count) { 
    if (count > 0) { 
    return; 
    } 

    $.ajax({ 
    type: "POST", 
    url: '<?php echo base_url()?>index.php/main/'+str+'/', 

    success: function(output_string) { 
     view(count + 1); 
     // i want to call function from here only once like view(str); 
    } 
    }); 
} 

Тогда вы бы сначала позвонить view так:

view(str, 0); 
1

Вы можете передать bool в качестве параметра, должна ли функция снова называть себя:

function view(str, shouldCallSelf){ 

    $.ajax({ 
     type: "POST", 
     url: '<?php echo base_url()?>index.php/main/'+str+'/', 
     success: function(output_string){ 
     if (shouldCallSelf) 
      view(output_string, false) 
     } 
    }); 
} 

Вы должны называть его истинным в первый раз. Затем он вызовет себя с ложью во второй раз, не будет выполняться снова.

1

Вы ищете jquery one. http://api.jquery.com/one/

скрипку http://jsfiddle.net/XKYeg/6/

<a href='#' id='lnk'>test</a> 

$('#lnk').one('click', function view(str) { 
    $.ajax({ 
     type: "POST", 
     url: '<?php echo base_url()?>index.php/main/' + str + '/', 

     success: function (output_string) { 
      i want to call 

      function from here only once like view(str); 
     } 
    }); 
}); 
+0

@Downvoter , прокомментируйте свой голос. –

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