在javascript中只调用一次js函数

时间:2013-03-23 07:55:12

标签: javascript jquery

我创建了js函数,现在我希望js函数只调用一次,我的代码是

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循环。

4 个答案:

答案 0 :(得分:8)

使用标志变量

var myflag = false;
function view(str) {
    $.ajax({
                type : "POST",
                url : '<?php echo base_url()?>index.php/main/' + str + '/',

                success : function(output_string) {
                    if (!myflag) {
                        view(str);
                    }
                    myflag = true;
                }
            });
}

答案 1 :(得分: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);

答案 2 :(得分: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)
      }
   });
} 

你应该第一次使用true来调用它。然后它将第二次用false调用自身,不再执行。

答案 3 :(得分:1)

您正在寻找jquery onehttp://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);
        }
    });
});