title: Ajax/jQuery Abort on timeout
body: <p>Newbie - Quesiton - </p>
  
  <p>Problem trying to solve: In case there are some open connections that aren't closed by XMLHttprequest, we want to abort them.</p>
  
  <p>In a javascript file, where there are Ajax calls, I need to start a timer for each call, and clear the timer in both success and failure callbacks. Want to make sure that - if timer fires then it means request has not returned, so it should be aborted.  For cases where inspite of the abort, the request may come back - want to discard them. Want to add a flag  which checks  success and failure callbacks before processing, and handles appropriately.</p>
  
  <p>Want to add a timer like this :</p>
  
  <pre><code>    var timer = setTimeout(function() {         // Start a timer. If triggered,
                             timedout = true; // set a flag and then
                             request.abort(); // abort the request.
                         },
                         timeout);            // time specified
  </code></pre>
  
  <p>But in the given existing code like below, I finding it hard on understanding where to start my timer and abort.</p>
  
  <pre><code>        this.ajaxCall = function(urlSuffix, type, data, successCallback, errorCallback, callbackParam, logFlag)
   {
      if (!successCallback) {
          throw "A successCallback must be supplied";
      }
      if (!errorCallback) {
          throw "An errorCallback must be supplied";
      }
      var st = 0;
      if (logFlag !== false)
          st = LogMessageTestCL(urlSuffix + " - start: " + type, -1);
      $.ajax({
          url: urlRoot + urlSuffix,
          type: type,
          data: data,
          cache: false,
  
          success: function(msg) {
              try {
                  if (logFlag !== false)
                      LogMessageTestCL(urlSuffix + " - end: " + type, st);
                  successCallback(msg, callbackParam);
              }
              catch (e) {
                  // this will only fail when the calling page is unloaded before the call returns, so no need to log this
              }
          },
          error: function(xhr,status) { 
              try {
                  if (logFlag !== false)
                      LogMessageTestCL(urlSuffix + " - error end: " + type, st);
                  if (status === "timeout") {
                      alert("30 sec time out");   
                      LogMessageTestCL("callback timed out");
                      return;
                  }
                  else if (status === "error") {
                      if (xhr.status != 200) {
                          errorCallback(xhr, callbackParam);
                      }
                  }
                  else
                      errorCallback(xhr, callbackParam);
              }
              catch (e) {
                  // this will only fail when the calling page is unloaded before the call returns, so no need to log this
              }
          }
      });
  }
  </code></pre>
  
  <p>Any help is greatly appreciated.</p>