[JQUERY] jQuery를, 간단한 폴링 예
JQUERYjQuery를, 간단한 폴링 예
해결법
-
1.
function doPoll(){ $.post('ajax/test.html', function(data) { alert(data); // process results here setTimeout(doPoll,5000); }); }
-
2.여기에 jQuery를 사용하여 롱 폴링 (긴 개최 HTTP 요청)에 도움이되는 기사입니다. 이 문서에서 파생 된 코드 :
여기에 jQuery를 사용하여 롱 폴링 (긴 개최 HTTP 요청)에 도움이되는 기사입니다. 이 문서에서 파생 된 코드 :
(function poll() { setTimeout(function() { $.ajax({ url: "/server/api/function", type: "GET", success: function(data) { console.log("polling"); }, dataType: "json", complete: poll, timeout: 2000 }) }, 5000); })();
이것은 아약스 요청이 완료된 후에 만 다음 요청을 할 것입니다.
그 위의 변형은 대기 / 타임 아웃 구간 직전 공경은 처음 호출을 실행한다.
(function poll() { $.ajax({ url: "/server/api/function", type: "GET", success: function(data) { console.log("polling"); }, dataType: "json", complete: setTimeout(function() {poll()}, 5000), timeout: 2000 }) })();
-
3.ES6에서,
ES6에서,
var co = require('co'); var $ = require('jQuery'); // because jquery doesn't support Promises/A+ spec function ajax(opts) { return new Promise(function(resolve, reject) { $.extend(opts, { success: resolve, error: reject }); $.ajax(opts); } } var poll = function() { co(function *() { return yield ajax({ url: '/my-api', type: 'json', method: 'post' }); }).then(function(response) { console.log(response); }).catch(function(err) { console.log(err); }); }; setInterval(poll, 5000);
-
4.
function poll(){ $("ajax.php", function(data){ //do stuff }); } setInterval(function(){ poll(); }, 5000);
-
5.
function make_call() { // do the request setTimeout(function(){ make_call(); }, 5000); } $(document).ready(function() { make_call(); });
-
6.jQuery.Deferred () 비동기 시퀀싱 및 오류 처리의 관리를 단순화 할 수 있습니다.
jQuery.Deferred () 비동기 시퀀싱 및 오류 처리의 관리를 단순화 할 수 있습니다.
polling_active = true // set false to interrupt polling function initiate_polling() { $.Deferred().resolve() // optional boilerplate providing the initial 'then()' .then( () => $.Deferred( d=>setTimeout(()=>d.resolve(),5000) ) ) // sleep .then( () => $.get('/my-api') ) // initiate AJAX .then( response => { if ( JSON.parse(response).my_result == my_target ) polling_active = false if ( ...unhappy... ) return $.Deferred().reject("unhappy") // abort if ( polling_active ) initiate_polling() // iterative recursion }) .fail( r => { polling_active=false, alert('failed: '+r) } ) // report errors }
이 우아한 방식이지만, 일부 망 가지고있다 ...
-
7.이 솔루션 :
이 솔루션 :
jQuery를 최소 버전은 1.12이다
$(document).ready(function () { function poll () { $.get({ url: '/api/stream/', success: function (data) { console.log(data) }, timeout: 10000 // == 10 seconds timeout }).always(function () { setTimeout(poll, 30000) // == 30 seconds polling period }) } // start polling poll() })
-
8.
(function poll() { setTimeout(function() { // var search = {} search["ssn"] = "831-33-6049"; search["first"] = "Harve"; search["last"] = "Veum"; search["gender"] = "M"; search["street"] = "5017 Ottis Tunnel Apt. 176"; search["city"] = "Shamrock"; search["state"] = "OK"; search["zip"] = "74068"; search["lat"] = "35.9124"; search["long"] = "-96.578"; search["city_pop"] = "111"; search["job"] = "Higher education careers adviser"; search["dob"] = "1995-08-14"; search["acct_num"] = "11220423"; search["profile"] = "millenials.json"; search["transnum"] = "9999999"; search["transdate"] = $("#datepicker").val(); search["category"] = $("#category").val(); search["amt"] = $("#amt").val(); search["row_key"] = "831-33-6049_9999999"; $.ajax({ type : "POST", headers : { contentType : "application/json" }, contentType : "application/json", url : "/stream_more", data : JSON.stringify(search), dataType : 'json', complete : poll, cache : false, timeout : 600000, success : function(data) { // //alert('jax') console.log("SUCCESS : ", data); //$("#btn-search").prop("disabled", false); // $('#feedback').html(""); for (var i = 0; i < data.length; i++) { // $('#feedback').prepend( '<tr><td>' + data[i].ssn + '</td><td>' + data[i].transdate + '</td><td>' + data[i].category + '</td><td>' + data[i].amt + '</td><td>' + data[i].purch_prob + '</td><td>' + data[i].offer + '</td></tr>').html(); } }, error : function(e) { //alert("error" + e); var json = "<h4>Ajax Response</h4><pre>" + e.responseText + "</pre>"; $('#feedback').html(json); console.log("ERROR : ", e); $("#btn-search").prop("disabled", false); } }); }, 3000); })();
-
9.나는 이것에 대한 작은 jQuery 플러그인을 만들었습니다. 당신은 그것을 시도 할 수 있습니다 :
나는 이것에 대한 작은 jQuery 플러그인을 만들었습니다. 당신은 그것을 시도 할 수 있습니다 :
$.poll('http://my/url', 100, (xhr, status, data) => { return data.hello === 'world'; })
https://www.npmjs.com/package/jquerypoll
from https://stackoverflow.com/questions/6835835/jquery-simple-polling-example by cc-by-sa and MIT license
'JQUERY' 카테고리의 다른 글
[JQUERY] 어떻게 위로 스크롤 또는 jQuery를 사용하여 앵커로 페이지 아래로 하는가? (0) | 2020.10.09 |
---|---|
[JQUERY] Ajax 요청의 내용 유형 및 데이터 형식은 무엇입니까? (0) | 2020.10.09 |
[JQUERY] 어떻게 jQuery를 통해 제출하지 않고 HTML5 양식 유효성 검사를 강제로 (0) | 2020.10.09 |
[JQUERY] 오른쪽에서 왼쪽으로 밀어? (0) | 2020.10.09 |
[JQUERY] 트위터 부트 스트랩 모달 닫기에 함수를 바인딩 (0) | 2020.10.09 |