25d1384939ae2993a959cc0d152ffab41633c64e angie Mon Apr 30 22:20:13 2012 -0700 Make setCartVars optionally synchronous too -- page reload was interruptingsetCartVars in some cases. (#6152) diff --git src/hg/js/ajax.js src/hg/js/ajax.js index a3b24c9..7329d8f 100644 --- src/hg/js/ajax.js +++ src/hg/js/ajax.js @@ -141,66 +141,69 @@ } catch(e) { req = false; } } } if(debug) alert(url); if(req) { req.onreadystatechange = callBack; req.open("GET", url, true); req.send(); //req.send(""); } } -function setCartVars(names, values, errFunc) +function setCartVars(names, values, errFunc, async) { // Asynchronously sets the array of cart vars with values if(names.length <= 0) return; if (errFunc == null) errFunc = errorHandler; + if (async == null) + async = true; // Set up constant portion of url var loc = window.location.href; if(loc.indexOf("?") > -1) { loc = loc.substring(0, loc.indexOf("?")); } if(loc.lastIndexOf("/") > -1) { loc = loc.substring(0, loc.lastIndexOf("/")); } loc = loc + "/cartDump"; var hgsid = getHgsid(); var data = "submit=1&noDisplay=1&hgsid=" + hgsid; var track = getTrack(); if(track && track.length > 0) data = data + "&g=" + track; for(var ix=0; ix<names.length; ix++) { data = data + "&" + encodeURIComponent(names[ix]) + "=" + encodeURIComponent(values[ix]); } var type; // We prefer GETs so we can analyze logs, but use POSTs if data is longer than a (conservatively small) // maximum length to avoid problems on older versions of IE. if((loc.length + data.length) > 2000) { type = "POST"; } else { type = "GET"; } $.ajax({ type: type, + async: async, url: loc, data: data, trueSuccess: function () {}, success: catchErrorOrDispatch, error: errFunc, cache: false }); } function setCartVar(name, value) { // Asynchronously set a cart variable. setCartVars( [ name ], [ value ] ); }