You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
1.8 KiB
JavaScript

function sendRequest(requestType, requestData, source, completeFunc) {
sendRequestAdv(requestType, requestData, source, completeFunc, null, null, false);
}
function sendRequestAdv(requestType, requestData, source, completeFunc, messageFunc, messageDelay, binaryInput) {
var divId = createDivRelative("loadingDiv", source);
$('#' + divId).html("<img src='graphics/loading.gif' /> Wait...");
$('#' + divId).animate(
{
opacity: 1,
left: "+=30"
},
300,
function() {
$.ajax(
{
url: "request/" + requestType + ".php",
type: "POST",
data: requestData,
contentType: (binaryInput ? false : "application/x-www-form-urlencoded; charset=UTF-8"),
processData: !binaryInput,
dataType: 'text', // type of response
success: function(response) {
updateAfterRequest(divId, response, completeFunc, 200, messageFunc, messageDelay);
},
error: function(xhr, textStatus, errorThrown) {
updateAfterRequest(divId, xhr.responseText, completeFunc, xhr.status, messageFunc, messageDelay);
}
}
);
}
);
}
function updateAfterRequest(divId, response, completeFunc, status, messageFunc, messageDelay) {
if(messageFunc == null) {
messageFunc = function(success, status, response) {
return response;
};
}
var message = messageFunc((status == 200), status, response);
$('#' + divId).html("<img src='graphics/status.php?status=" + status + "' title='Status " + status + "' /> " + message);
setTimeout(
function() {
$('#' + divId).animate(
{
opacity: 0,
left: "+=50"
},
500,
function() {
removeDiv(divId);
}
);
if(completeFunc != null) {
completeFunc((status == 200), status, response);
}
},
(messageDelay != null ? messageDelay : (status == 200 ? 1000 : 6000))
);
}