tapewormbyte Posted October 22, 2006 Share Posted October 22, 2006 I'm trying to update mutiple div's, depending whether or not new content is available for them. I can get one div to update perfectly fine, but as soon as I add recursive-requests stuff starts messing up in that div's will blank out with no content at all, or with the wrong content (as if they're intercepting each other). Is there a way around this?This is my js:[code]function createRequestObject() { var ro; var browser = navigator.appName; if(browser == 'Microsoft Internet Explorer') { ro = new ActiveXObject("Microsoft.XMLHTTP"); } else { ro = new XMLHttpRequest(); } return ro;}var http = createRequestObject();function sndReq(timestamp, action) { http.open('get', 'terminal.php?t='+timestamp+'&action='+action+'&nocache='+Date()); http.onreadystatechange = function(){handleResponse(action);} http.send(null);}function handleResponse(action) { if(http.readyState == 4) { var response = http.responseText; switch(action) { case 'updateTimer': if(response != timestamp) { timestamp = response; } sndReq(timestamp, 'usersonline'); break case 'usersonline': if(response != document.getElementById(action).innerHTML) { document.getElementById(action).innerHTML = response; } // un-commenting the following line is where problems occur //sndReq(timestamp, 'calendar'); break case 'calendar': if(response != 'noupdate') { document.getElementById(action).innerHTML = response; } break } }}var timestamp = '<?php echo time(); ?>';setInterval("sndReq(timestamp, 'updateTimer')", 30000);[/code]And this is my PHP:[code]<?phprequire_once('../offline/functions.php');session_start();if(isset($_REQUEST['t'], $_REQUEST['action'])) { $timestamp = ctype_digit($_REQUEST['t']) ? $_REQUEST['t'] : time(); switch($_REQUEST['action']) { case 'updateTimer': echo time(); break; case 'usersonline': $result = db_query("SELECT count(*) FROM icv_sessions WHERE valid = 'Y'"); $online = $result[0][0] <= 1 ? 'there is currently 1 active session' : 'there are currently '.$result[0][0].' active sessions'; $online .= ' :: <b>'.date("n.j.y.B", $_REQUEST['t']).'</b> '; echo $online; break; case 'calendar': $result = db_query("SELECT UNIX_TIMESTAMP(create_ts) FROM icv_threads ORDER BY create_ts DESC LIMIT 1"); $lastThread = $result[0][0]; if($lastThread >= ($timestamp - 60)) { $dateArray = setup_calendar(); echo build_calendar($dateArray['month'], $dateArray['year'], $dateArray['dates']); } else { echo 'noupdate'; } break; } exit();}?>[/code] Quote Link to comment Share on other sites More sharing options...
ober Posted October 23, 2006 Share Posted October 23, 2006 If you're resending the same request, you'll have to either create a second HTTPREQUEST object or wait longer to go back for the second set of data. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.