2013-05-19 2 views
0

버튼 클릭 지연에 문제가 있습니다. 이미 stackoverflow 통해 검색 한 및 몇 가지 대답을 찾았습니다 및 setTimeout 함께 쉽게 충분히 있지만 작업 할 일을 얻을 수 없습니다. 여기에 코드의 샘플입니다 : 버튼을setTimeout을 사용하여 지연 자바 스크립트 버튼을 클릭하십시오.

<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 버튼

AJAX 제출의 데이터베이스에 데이터를 제출는

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

제출 버튼의 onclick = "addMEM()"은 다른 스크립트를위한 것입니다. 그것은 꽤 바쁜 버튼입니다.

그래서 Submit을 클릭하면 ajax 스크립트가 데이터를 post.php로 보내 데이터베이스에 전송합니다. 같은 Submit Submit을 사용하면 Pusher 코드가 트리거되어 결국 제출 된 데이터를 데이터베이스에서 다시 가져와 연결된 모든 사람에게 브로드 캐스팅합니다.

내가 겪고있는 문제는 데이터가 데이터베이스에 데이터를 제출하고 데이터베이스에서 동시에 가져 오는 Pusher를 트리거한다는 것입니다. 푸시 코드가 제출 한 데이터를 데이터베이스에서 가져 오기 전에 75 %의 시간이 소요됩니다.

내가 생각할 수있는 모든 곳에서 setTimeout을 넣었고 푸시 코드를 지연시킬 수 없었습니다. 어떤 제안? 제출 및 브로드 캐스트 버튼이 지연되면 확인하십시오. 제출을 클릭하면 AJAX 코드가 지연되거나 onclick = addMEM()이 표시되지 않습니다.

죄송합니다. 너무 복잡해서 죄송합니다. 이것은 긴 프로젝트의 마지막 단계입니다.이 작업을 수행 할 수 있다면 여기에서 모든 CSS, 데이터 입력 및 수학이 가능합니다.

+0

실행을 '$ .ajax()'호출의 콜백으로서 "Pusher"코드. – 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

정말 고마워요! 나는 그 정확한 라인에 set timeout을두기도하지만, 나는 단지 SetTimeout (code, 2000)처럼 놓는다. 고맙습니다! – GlassHalfAwesome