2013-04-15 8 views
0

У меня есть видео-сайт, а в источнике у меня есть переменная javascript с именем ajax_switch.post_status, которая имеет 2 значения, вкл. Или выкл.Изменение переменной javascript в реальном времени

Также у меня есть кнопка слайда с двумя вариантами включения и выключения. Эта кнопка включает или выключает публикацию в facebook. Поэтому, когда я нажимаю воспроизведение на видео через 10 секунд, опубликуем в facebook. Кнопка является jquery, поэтому, когда я нажимаю или выключаю, вы делаете обновление в базе данных. Как я могу изменить переменную ajax_switch.post_status в режиме реального времени в источнике, поэтому, если пользователь получит доступ к видеостранице и отключит пост в facebook без обновления игры, чтобы не публиковать?

Я использую это в wordpress. Мои функции:

Показать код кнопки в одном PHP

<div class="left" id="1"></div> 
<div id="ajax" style="padding-left: 10px; line-height: 13px; height: 27px; vertical-align:middle; display: table-cell;" > 
    Permiteți Video Best să distribuie acest video pe Facebook cu acordul dvs. Debifând această casetă va opri distribuirea și va șterge postarea de pe cronologia dvs. 
</div> 
<div class="clear"></div> 

<script type="text/javascript"> 

    $('#1').iphoneSwitch(ajax_switch.post_status, function() 
    { 
     $.post(ajax_switch.templateUrl+'on.php', function(data) 
     { 
      $('#ajax').html(data); 
      ajax_switch.post_status = 'on'; 
     }); 
    }, 
    function() 
    { 
     $.post(ajax_switch.templateUrl+'off.php', function(data) 
     { 
      $('#ajax').html(data); 
      ajax_switch.post_status = 'off'; 
     }); 
    }, 
    { 
     switch_on_container_path: ajax_switch.templateUrl+'iphone_switch_container_off.png' 
    }); 
</script> 

И условия для размещения:

if(ajax_switch.post_status == 'on') 
{ 
    FB.api(
     '/me/video.watches', 
     'post', 
     { 
      'movie': '<?php the_permalink() ?>?ex=257957417674441', 
      'access_token': '<?php echo $token; ?>' 
     }, 
     function(response) 
     { 
      if (!response || response.error) 
      { 
       console.log(response.error); 
      } 
      else 
      { 
       console.log('Ewww!'); 
      } 
     }); 
     } 
+0

Я думаю, вы могли бы переместить 'ajax_switch.post_status = 'on';' вне обратного вызова ajax. Может быть, я не понимаю ваш вопрос. – travis

+0

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

ответ

0

Поскольку у вас есть ваш код, написанный в настоящее время, вам нужно дождаться ответа на ваш запрос ajax до того, как вы обновите ajax_switch.post_status.

Перемещение кода вне обратного вызова ajax позволит ему немедленно действовать с задержкой из базы данных.

Что-то иметь в виду, однако, вы можете захотеть сохранить код в обратном вызове, чтобы поддерживать правильное состояние вашей базы данных передним клиентом. Вы можете предположить, что успехи в обновлении, но вы можете сделать проверку внутри обратного вызова на случай, если он не сработает. Таким образом, ваш клиент никогда не синхронизируется с вашей базой данных.

+0

Да, я сделал именно так: '$ .post (ajax_switch.templateUrl + 'on.php', function (data) { $ ('# ajax'). Html (data); ajax_switch.post_status = 'on'; }); ' –

0

Я не понимаю, что метод "iphoneSwitch" делает. Я бы ожидал чего-то вроде:

$("#1").click(function(){ 
    var targetString = ajax_switch.post_status; 
    $.post(ajax_switch.templateUrl + targetString + '.php', function(data) { 
    $('#ajax').html(data); 
    ajax_switch.post_status = ajax_switch.post_status == 'off' ? "on" : "off"; 
    }); 
}); 

Сообщите мне, если бы на вопрос был больше.

+0

Отсюда я получил сценарий: http://papermashup.com/jquery-iphone-style-ajax-switch/. Трэвис дал мне правильный ответ, я тестировал и работал. –

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