From c16f4df0fe8c8d9fdf77f4e0fb80be9f20960f2e Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Sun, 20 Jul 2014 19:11:43 +0200 Subject: [PATCH] add ajax sync method --- telemeta/static/telemeta/js/application.js | 75 ++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/telemeta/static/telemeta/js/application.js b/telemeta/static/telemeta/js/application.js index e5e933e8..313ef896 100644 --- a/telemeta/static/telemeta/js/application.js +++ b/telemeta/static/telemeta/js/application.js @@ -185,6 +185,78 @@ var json = function(param,method,onSuccessFcn,onErrorFcn){ data2send+=method; data2send+='","jsonrpc":"1.0"}'; + var $J = jQuery; + $J.ajax({ + type: "POST", + url: 'json/', + contentType: "application/json", + data: data2send, + dataType: "json", + success: function(data, textStatus, jqXHR){ + if(onSuccessFcn){ + onSuccessFcn(data, textStatus, jqXHR); + } + }, + error: function(jqXHR, textStatus, errorThrown){ + if(onErrorFcn){ + onErrorFcn(jqXHR, textStatus, errorThrown); + return; + } + //default: + var details = "\n(no further info available)"; + if(jqXHR) { + details="\nThe server responded witha status of "+jqXHR.status+" ("+ + jqXHR.statusText+")\n\nDetails (request responseText):\n"+jqXHR.responseText; + } + alert("ERROR: Failed to save"+details); + + } + }); + +}; + + + +var json_sync = function(param,method,onSuccessFcn,onErrorFcn){ + //this function converts a javascript object to a string + var toString_ = function(string){ + if(typeof string == "string"){ + //escapes newlines quotes and backslashes + string = string.replace(/\\/g,"\\\\") + .replace(/\n/g,"\\n") + .replace(/"/g,"\\\""); + } + var array; //used for arrays and objects (see below) + if(typeof string == "boolean" || typeof string== "number" || typeof string == "string"){ + string = '"'+string+'"'; + }else if(string instanceof Array){ + array = []; + for(var i = 0;i