2013-05-19 2 views
0

У меня проблема с задержкой нажатия кнопки. Я уже просматривал stackoverflow, и я нашел пару ответов, и это достаточно легко с помощью setTimeout, но я не могу заставить его работать над тем, над чем я работаю. Вот пример кода:Задержка Javascript button onClick using setTimeout

AJAX отправляет данные в базу данных на кнопки отправки нажмите

<script> 
    $(function() { 
    $('form').on('submit', function (e) { 
     $.ajax({ 
     type: 'post', 
     url: 'post.php', 
     data: $('form').serialize(), 
     }); 
     e.preventDefault(); 
    }); 
    }); 
</script> 

Толкатель код

<script> 
    $(function() { 

    var pusher = new Pusher('pusher') 
    var activityChannel = pusher.subscribe('stream'); 
    var activityMonitor = new PusherActivityStreamer(activityChannel, "#current"); 

    var examples = new ExampleActivities(activityMonitor, pusher); 

    $("#broadcast").click(function(){ 
     activityMonitor.sendActivity('broadcast'); 
    }); 
    $("#submit").click(function(){ 
     activityMonitor.sendActivity('submit'); 
    }); 
    }); 
</script> 

кнопки HTML

<input id="submit" name="submit" type="submit" value="Submit" onclick="addMEM()"><br> 
<button id="broadcast">Broadcast</button> 

Onclick = "addMEM()" в кнопке отправки для другого скрипта. Это довольно занятая кнопка.

Итак, что происходит, я нажимаю «Отправить», и сценарий ajax выталкивает данные в post.php, который отправляет его в базу данных. С помощью этого же нажатия «Отправить» запускается код Pusher, который в конечном итоге вытаскивает данные, отправленные из базы данных, и передает их всем, кто подключен.

Проблема, с которой я сталкиваюсь, заключается в том, что Submit отправляет данные в базу данных и запускает Pusher, который вытаскивает из базы данных одновременно. 75% времени, когда код толкателя пытается вытащить данные из базы данных до отправки Submit.

Я поставил setTimeout везде, о котором я мог думать, и просто не мог отложить код Pusher. Какие-либо предложения? Это нормально, если кнопки Submit AND Broadcast задерживаются. Это не нормально, если нажатие кнопки «Отправить» задерживает код AJAX или onclick = addMEM()

Извините, что это так сложно. Это последний шаг длинного проекта, и если я смогу получить эту работу, тогда все CSS, ввод данных и математика отсюда.

+0

Запустит Код «Pusher» как обратный вызов вашего вызова '$ .ajax(). – Pointy

ответ

1

Я предлагаю пропускание метода успеха обратного вызов jQuery.ajax что будет инициировать вещание, как так:

$.ajax({ 
    type: 'post', 
    url: 'post.php', 
    data: $('form').serialize(), 
    success: function() { 
    activityMonitor && activityMonitor.sendActivity('broadcast'); 
    } 
}); 

Решение с SetTimeout будет выглядеть следующим образом:

$("#broadcast").click(function(){ 
    setTimeout(function() { activityMonitor.sendActivity('broadcast') }, 2000); 
}); 
+0

Большое вам спасибо! Я даже поставил тайм-аут набора на эту точную строку, но я просто поставил его как SetTimeout (код, 2000). Спасибо! – GlassHalfAwesome

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