// posts AJAX request to Ingress API. // action: last part of the actual URL, the rpc/dashboard. is // added automatically // data: JSON data to post. method will be derived automatically from // action, but may be overridden. Expects to be given Hash. // Strings are not supported. // success: method to call on success. See jQuery API docs for avail- // able arguments: http://api.jquery.com/jQuery.ajax/ // error: see above. Additionally it is logged if the request failed. window.postAjax = function(action, data, success, error) { var versionStr = nemesis.dashboard.config.CURRENT_VERSION; var post_data = JSON.stringify($.extend({}, data, {v: versionStr, b: "", c: ""})); var remove = function(data, textStatus, jqXHR) { window.requests.remove(jqXHR); }; var errCnt = function(jqXHR) { window.failedRequestCount++; window.requests.remove(jqXHR); }; var result = $.ajax({ url: '/r/'+action, type: 'POST', data: post_data, context: data, dataType: 'json', success: [remove, success], error: error ? [errCnt, error] : errCnt, contentType: 'application/json; charset=utf-8', beforeSend: function(req) { req.setRequestHeader('X-CSRFToken', readCookie('csrftoken')); } }); result.action = action; return result; }