Ajax 폴 링 요청 상태 (위 챗 공식 번호 밴드 파라미터 QR 코드 로그 인 사이트)

여기 서 실현 하고 자 하 는 기능 은 위 챗 공식 번호 에 파 라 메 터 를 가 진 QR 코드 를 스 캔 하여 사이트 에 접속 하 는 것 이다.
그러나 ajax 가 끊 이지 않 는 요청 서버 를 사용 하면 서버 의 부하 가 증가 할 수 있 음 이 분명 합 니 다. 따라서 이 예 는 js 의 setInterval 을 사용 하여 주기 적 으로 ajax 함 수 를 호출 하여 서버 에 데 이 터 를 요청 하지만 요청 이 성공 하거나 요청 한 후 일정 횟수 가 완료 되 지 않 았 을 때 clearinterval 함수 로 타 이 머 를 비 웁 니 다.
코드 와 설명 은 다음 과 같 습 니 다. (백 엔 드 는 thinkpHP 로 이 루어 지기 때문에 js 코드 에는 thinkpHP 의 문법 규칙 이 포함 되 어 있 습 니 다)



var uid = "{$uid}";
var i = 0;
var timer;
$().ready(function(){
//         
$('#login').click(function(){
//        ,   
if(uid){ 
return ;
}
//     ,  remote         
$('#loginModel').modal({
remote: "{:U('user/login')}"
});
});
//           
$("#loginModel").on("hidden.bs.modal", function() {
$(this).removeData("bs.modal");
});
//         ,               ,              
$('#loginModel').on('shown.bs.modal', function (e) {
timer = setInterval(ajax_request, 3000);
});
});
//ajax     ,
function ajax_request(){
i++;
//      20       ,     ,      ,   3s    ,   20 ,          
if(i > 20){
$('.login_info1').html('<span style="color:red;">    ,         ~</span>');
clearInterval(timer);
return ;
}
$.ajax({
type: "post",
url: "{:U('User/login_qrcode')}",
timeout : 3000,
data: { "scene_id": $('#scene_id').val() },
success: function (msg){ 
if(1 == msg.status){
$('.login_info1').html('<span style="color:#0C9;">'+msg.info+'</span>');
setTimeout(refresh, 3000);
return ;
}
},
error: function(){
}
});
}
//    
function refresh(){
location.reload();
}

자, 코드 는 여기 서 마 치 겠 습 니 다. 여러분 께 도움 이 되 셨 으 면 좋 겠 습 니 다!

좋은 웹페이지 즐겨찾기