2013-05-31 4 views
0

Я создал кнопку на моем веб-сайте, когда она нажата, я отправил данные на файл php с помощью ajax и вернул результаты. Код, я использую ниже,Вызов ajax один раз

Моя цель:

  1. Когда эта кнопка нажата в первый раз. Я хочу, чтобы отправить данные на какой-php файл с помощью ajax и возвращать результаты, и
  2. Когда она нажата во второй раз, я просто хочу, чтобы скрыть содержимое, и
  3. Когда она нажата в третий раз , Я просто хочу показать контейнер без повторного вызова ajax.

JQuery:

$(function() { 
    $('#click_me').click(function(){ 
     var container = $('#container').css('display'); 
     var id = $('#id').html(); 
      if(container == 'none'){ 
       $.ajax({ 
       type: 'POST', 
       data: {id: id}, 
       url: "ajax/get_items.php", 
       }).done(function(data) { 
       $('#container').html(data); 
       }).success(function(){ 
       $('#container').show('fast'); 
       }); 
       }else if(container == 'block'){ 
     $('#container').hide('fast'); 
     } 
     }); 
}); 

Html:

<input type="button" id="click_me" value="Click Me"/> 
<div id="container"></div> 
+0

так, что о счетчике? – steven

+0

Как насчет этого ?? – user2310422

+1

следует выполнять счетчик и делать счетчик ++ каждый раз, когда пользователь нажимает. Тогда вы можете делать разные вещи при каждом нажатии – steven

ответ

1

Что-то вроде этого следует сделать трюк ...

$("#click_me").click(function(){ 
    var $btn = $(this); 
    var count = ($btn.data("click_count") || 0) + 1; 
    $btn.data("click_count", count); 
    if (count == 1) { 
    $.ajax({ 
     var container = $('#container').css('display'); 
     var id = $('#id').html(); 
     if(container == 'none'){ 
     $.ajax({ 
      type: 'POST', 
      data: {id: id}, 
      url: "ajax/get_items.php" 
    }) 
    } 
    else if (count == 2) { 
    $('#container').hide('fast'); 
    } 
    else { 
    $('#container').show('fast'); 
    $btn.unbind("click"); 
    } 
    return false; 
}); 
3

Путь JQuery будет выглядеть так:

$(function() { 
    $('#click_me').one('click', function() { 
     $.ajax({ 
      // ... other params ..., 
      success: function(result) { 
       $('#container').html(result).show('fast'); 
       $('#click_me').click(function() { 
        $('#container').toggle('fast'); 
       }); 
      }); 
     }); 
    }); 
}); 

http://api.jquery.com/one/

http://api.jquery.com/toggle/

+0

+1 для этого приятного решения – steven

+0

-1, Предыдущее решение было опущено для предлагая это решение почему? Теперь у этого есть 3 голоса? (No Offense leftclickben) – Starx

+0

А? Я не видел никаких других решений, подобных этому, и я никого не делал. О чем ты говоришь? – leftclickben

0

Один из способов сделать это - добавить счетчик вызовов класса, используя jQuery каждый раз, когда пользователь нажимает кнопку (http://api.jquery.com/addClass/), и вы можете получить значение count в обработчике и на основе того, что вы можете обработать щелчок соответствующим образом.

0

Вы можете сделать это, указав простую переменную, подсчитывая клики.

$(function() { 
    var clickCount = 1; //Start with first click 

    $('#click_me').click(function(){ 
     switch(clickCount) { 
      case 1: //Code for the first click 

       // I am just pasting your code, if may have to change this 
       var container = $('#container').css('display'); 
       var id = $('#id').html(); 
        if(container == 'none'){ 
         $.ajax({ 
         type: 'POST', 
         data: {id: id}, 
         url: "ajax/get_items.php", 
         }).done(function(data) { 
         $('#container').html(data); 
         }).success(function(){ 
         $('#container').show('fast'); 
         }); 
         }else if(container == 'block'){ 
       $('#container').hide('fast'); 
       } 
       break; 
       case 2: 
       //code for second click 
       break; 
       case 3: 
       //Code for the third click 
       break;  
     }); 
     clickCount++; //Add to the click. 
}); 
Смежные вопросы