saidbuchari
Grünschnabel
Hallo alle zusammen.
ich möchte gerne alle ajax abfragen über eine function ausführen und habe mir dafür eigens eine function ausgearbeitet. da sind noch ein paar macken drin ( da immer noch was dazu kommt) aber in grossem und ganzen funktioniert sie schon. Folgende Probleme hab ich jetzt festgestellt.
- wenn man sich länger auf der Seite aufhält feuert die function bei einmaligem klicken mehrmals und macht Einträge in die datenbank etc. was natürlich nicht erwünscht ist.
- desweiteren wüsste ich gerne was ich machen kann das die fucntion hinterneinander und nicht gleichzeitig ausgeführt wird sprich:
Button a wurde geklickt function wird ausgeführt und irgendwas wird eingetragen.
noch während der ajax request ausgeführt wurde wird button b geklickt und die function soll erneut ausgeführt werden und was anderes eintragen. das funktioniert zwar aber ich glaube das dadurch fehler entstehen. hoffe ihr könnt mir helfen was ich anders machen kann um erstmal das hauptproblem des bei einmaligem klicken mehrmals abfeuern zu lösen
Nun hier die funktion:
die ganzen alert geschichten sind für mich zum prüfen und werden später rausgelöscht sobald endlich alles läuft. die function wird szum beispiel folgendermassen aufgerufen.
ich muss dazu sagen das ich ziemlich neu in Jquery bin und deswegen sitze ich jetzt auch seit paar Tagen an der Lösung und hoffe echt auf Hilfe von den cracks hier. Achso desweiteren zeigt mir jsfiddle an das die letzte geschweifte } und die erste geschweifte klammer der function fehlerhaft sind. da sind bestimmt noch mehr fehler drin aber die will ich jetzt nach udn nach ausbügeln.
Danke und liebe Grüsse
Said
ich möchte gerne alle ajax abfragen über eine function ausführen und habe mir dafür eigens eine function ausgearbeitet. da sind noch ein paar macken drin ( da immer noch was dazu kommt) aber in grossem und ganzen funktioniert sie schon. Folgende Probleme hab ich jetzt festgestellt.
- wenn man sich länger auf der Seite aufhält feuert die function bei einmaligem klicken mehrmals und macht Einträge in die datenbank etc. was natürlich nicht erwünscht ist.
- desweiteren wüsste ich gerne was ich machen kann das die fucntion hinterneinander und nicht gleichzeitig ausgeführt wird sprich:
Button a wurde geklickt function wird ausgeführt und irgendwas wird eingetragen.
noch während der ajax request ausgeführt wurde wird button b geklickt und die function soll erneut ausgeführt werden und was anderes eintragen. das funktioniert zwar aber ich glaube das dadurch fehler entstehen. hoffe ihr könnt mir helfen was ich anders machen kann um erstmal das hauptproblem des bei einmaligem klicken mehrmals abfeuern zu lösen
Nun hier die funktion:
Code:
// Ajax load mit Preloader und ausgabe
$.fn.do_action_ajax = function (datei_load, daten_string, laden_nachricht, ausgabe_neu, ausgabe_neu_name, ausgabe_wo, animiert, id_out, id_in) {
var loader = false;
$.ajax({
type: 'POST',
url: datei_load,
data: daten_string,
cache: false,
beforeSend: function () {
// this is where we append a loading
//$('#loader_overlay').fadeOut(1000);
//$('#loader_overlay').remove();
if ($('#loader_overlay').length > 0) {
//alert("gibs schon");
$('#overlay_content').html(laden_nachricht + '<br><img src="bilder/ajax-loader.gif" />');
$('#loader_overlay').fadeIn(200);
} else {
$('body').append('<div id="loader_overlay" class="overlay"><div style="display: table-cell; vertical-align: middle; position: static;"><div style="width: auto; margin-left: auto; margin-right: auto;" id="overlay_content">' + laden_nachricht + '<br><img src="bilder/ajax-loader.gif" /></div></div></div>');
}
$.fn.center('#loader_overlay');
},
success: function (data) {
var fehler;
var fehler_nachricht;
if (typeof (section) == 'undefined') {
var section = 1;
} else {
var section = section++;
}
// Designs bestimmen
// successful request; do something with the data
if (animiert !== false) {
$(id_out).animate({
opacity: 0.33,
left: '0px',
height: 'toggle'
}, 200, function () {
// Animation fertig
if (id_in !== false) {
$(id_in).animate({
opacity: 1,
left: '0px',
height: 'toggle'
}, 200, function () {
// Animation fertig
});
}
});
} else {
// Soll die div ausgefadet werden aus der die aktion stammt?
if (id_out !== false) {
$(id_out).fadeOut('fast');
}
if (id_in !== false) {
$(id_in).fadeIn('fast');
}
}
/// Daten rein was passieren soll nachdem die div verschwunden ist
if (ausgabe_neu == true) {
if (ausgabe_neu_name !== false) {
var div_neu_benannt = true;
//alert("neu_name anhängen");
$(ausgabe_wo).append('<div id="' + ausgabe_neu_name + section + '" class="' + ausgabe_neu_name + '">' + data + '</div>');
//$("<div></div>").attr("id", "section" + section++).appendTo("#content_pane");
// Welche Div wurde ausgegeben Fehler/Ausgabe
fehler = $("#" + ausgabe_neu_name + section).find('#fehler').attr('rel');
fehler_nachricht = $("#" + ausgabe_neu_name + section).find('#fehler').attr('rel2');
} else {
//alert("standartdiv anhängen");
var div_neu_benannt = false;
$(ausgabe_wo).append(data);
fehler = $(ausgabe_wo).find('#fehler').attr('rel');
fehler_nachricht = $(ausgabe_wo).find('#fehler').attr('rel2');
}
} else {
//Funktioniert
//alert("standartdiv einfügen");
var div_neu_benannt = false;
$(ausgabe_wo).html(data);
fehler = $(ausgabe_wo).find('#fehler').attr('rel');
fehler_nachricht = $(ausgabe_wo).find('#fehler').attr('rel2');
}
// gab es eine schwebende ausgabe? Soll sie ausgefadet werden oder bleibt sie bestehen?
daten = JSON.stringify(daten_string, null, 2);
daten = JSON.parse(daten);
// wenn ein fehler passiert ist
if (fehler == "error") {
// Wenn animiert rückgängig
if (animiert !== false) {
$(id_in).animate({
opacity: 0,
left: '0px',
height: 'toggle'
}, 200, function () {
$(id_out).animate({
opacity: 1,
left: '0px',
height: 'toggle'
}, 200, function () {
});
});
} else {
$(id_out).fadeIn('fast');
$(id_in).fadeOut('fast');
}
/// Fehler ausgeben
$('#overlay_content').html('<div style="float:left;margin-left:-20px;margin-height:-80px;"><img src="bilder/buttons/errorclose.png" id="div_close" width=20"></div>' + fehler_nachricht);
$('#loader_overlay').css('background-color', 'rgba(255,0,0,0.7)');
$('#loader_overlay').css('color', 'white');
$('#loader_overlay').fadeIn(200);
} else {
if (typeof (fehler) !== 'undefined' && typeof (fehler_nachricht) !== 'undefined' && fehler_nachricht != '') {
// Ausgabe rein wenn erfolgreich die aktipon durchgeführt wurde
$('#overlay_content').html(fehler_nachricht);
$('#loader_overlay').css('background-color', 'rgba(0,0,0,0.7)');
$('#loader_overlay').css('color', 'white');
$('#loader_overlay').fadeIn(200);
if (daten.fadeOut == 1) {
//$('#loader_overlay').delay(daten.fadeOutWert).fadeOut('fast');
$("#loader_overlay").delay(daten.fadeOutWert).fadeOut('slow', function () {
$("#loader_overlay").remove();
});
}
} else {
// Loader entfernen bzw nicht anzeigen
$("#loader_overlay").fadeOut('fast', function () {
$("#loader_overlay").remove();
});
}
}
if (typeof (fehler) == "undefined") {
// Loader entfernen
$("#loader_overlay").fadeOut('fast', function () {
$("#loader_overlay").remove();
});
}
////alert(fehler_nachricht);
// alert("fehler: "+fehler+"\r nachricht: "+fehler_nachricht);
// alert ( section);
$.fn.center('#loader_overlay');
// bestimmen ob Hauptbutton oder unterbutton geklcikt wurde
//if(ausgabe_wo == "#module"){
//statistik = load("stats_klick.php");
//statistik = "ich bin n text und so";
$('body').append('<div id="statistik_ausgabe" style="margin-bottom:0px;"></div>');
$('#statistik_ausgabe').load("stats_klick.php");
$('body').find('#statistik_ausgabe').hide();
//}
//$('#loader_overlay').fadeOut(1000);
//$('#loader_overlay').remove();
//return fehler;
},
error: function () {
//$('#loader_overlay').fadeOut(1000);
//$('#loader_overlay').remove();
// failed request; give feedback to user
$('body').append('<div id="error_overlay" class="overlay_error"><div style="display: table-cell; vertical-align: middle; position: static;"><div style="width: auto; margin-left: auto; margin-right: auto;" id="overlay_content">Oops! Ein Fehler ist aufgetreten. Bitte versuche es später erneut.</div></div></div>');
$.fn.center('#error_overlay');
}
});
}
die ganzen alert geschichten sind für mich zum prüfen und werden später rausgelöscht sobald endlich alles läuft. die function wird szum beispiel folgendermassen aufgerufen.
Code:
daten = {
anzeige_id: $(this).attr('rel'),
aktion: "anz_annehmen",
fadeOut: 1,
fadeOutWert: 3000,
key: $('#key').val()
};
// daten = JSON.stringify(daten, null, 2);
// daten = JSON.parse(daten);
$.fn.do_action_ajax('test.php',daten,'Deine Anfrage wird gesendet',false,false,'#annehmen',false,false,false);
ich muss dazu sagen das ich ziemlich neu in Jquery bin und deswegen sitze ich jetzt auch seit paar Tagen an der Lösung und hoffe echt auf Hilfe von den cracks hier. Achso desweiteren zeigt mir jsfiddle an das die letzte geschweifte } und die erste geschweifte klammer der function fehlerhaft sind. da sind bestimmt noch mehr fehler drin aber die will ich jetzt nach udn nach ausbügeln.
Danke und liebe Grüsse
Said
Zuletzt bearbeitet: