Ajax Rückgabe mit JQuery wird doppelt ausgeführt

Blackhead77

New member
Ich habe festgesellt dass meine JQery Rückgabe doppelt ausgeführt wird:

Das Alert Fenster erscheint zweimal.
alert("Bilder erfolgreich Bearbeitet!");

Wie kann ich das ändern.
PHP:
$.post( 'convert.php', {
        gallerie: gallerie.value,
        mail:mail.value,
		name:name.value,
		logo:activ
    },
    function (data) {
		$("#clickdiv").html("<img id='clickbild' src='logos/start.png' class='displayed' onclick='klick()' width='50' height='50' alt ='Start' />");
		if(aktiv == true)
		{
		alert(aktiv);
		aktiv = false;
		alert("Bilder erfolgreich Bearbeitet!");
		
		}
    }
	

);
 
Ohne genauere Angaben würde ich sagen, dass dein POST zweimal ausgeführt wird. Kannst du uns eventuell etwas mehr Code zeigen oder einen Testlink einrichten?
 
PHP:
function klick()
{
var gallerie = document.getElementById('gallerie');
var mail = document.getElementById('mail');
var name = document.getElementById('name');
var log1 = document.getElementById('log1');
var log2 = document.getElementById('log2');
var log3 = document.getElementById('log3');
var log4 = document.getElementById('log4');
var log5 = document.getElementById('log5');
var log6 = document.getElementById('log6');
var log7 = document.getElementById('log7');
//var mail = document.getElementById('mail');
var logo = [log1, log2, log3,log4,log5,log6,log7];
var activ =0; // Logo
var aktiv = true;

for(var i=0;i<logo.length;i++)
{
if(logo[i].checked)
{
activ = i+1;
}
}
// Prüfen ob alles ausgefüllt wurde

if(gallerie.value != 0 && mail.value != 0 && activ >0 && name.value != 0)
{
var send = [gallerie.value, mail.value, activ];

$("#start").click(function() {
	$("#clickdiv").html("<img id='clickbild' src='logos/start.png' class='displayed' onclick='klick()' width='50' height='50' alt ='Start' />");
});

$("#clickbild").click(function() {
	$("#clickdiv").html("<ul id='clickloading' class='drops blue'> <li></li><li></li><li></li><li></li><li></li></ul>");
});


$.post( 'convert.php', {
        gallerie: gallerie.value,
        mail:mail.value,
		name:name.value,
		logo:activ
    },
    function (data) {
		$("#clickdiv").html("<img id='clickbild' src='logos/start.png' class='displayed' onclick='klick()' width='50' height='50' alt ='Start' />");
		if(aktiv == true)
		{
			alert(data);
		aktiv = false;
		//alert("Bilder erfolgreich Bearbeitet!");
		
		}
    }
	

);

}else
{
if (activ == 0)
{
window.alert("Bitte Logo auswählen");
}
if (gallerie.value == 0)
{
window.alert("Bitte Gallerienamen wählen");
}
if (mail.value  == 0)
{
window.alert("Bitte Email wählen");
}
if (name.value  == 0)
{
window.alert("Bitte Name wählen");
}
}
}

HTML:
	<div id="clickdiv" class="table">

		<img id="clickbild" src="logos/start.png" class="displayed" onclick="klick()" width="50" height="50" alt ="Start" />
		<!-- OnClick= 'document.getElementById("table").innerHTML="" ' >
		> -->
		
		<a href="#"></a>
	</div>
 
Zuerst solltest du dringend deinen Code sauber einrücken... das macht die Sache viel einfacher zu lesen un dzu warten.

Dann bin ich mir ziemlich sicher, dass die Zuweisungen der zwei click-Eventlistener (relativ in der Mitte für #start und #clickbild) falsch sind, sondern du eigentlich das HTML direkt ändern willst. Sonst musst du ja zwei mal auf #clickbild klicken, damit du das #clickloading siehst...

Sonst kann ich nicht erkennen, wo das Doppelte herkommen könnte.

Aber kannst du uns keinen Testlink geben, wo wir uns das direkt live ansehen können?

PS: ein <ul> mit lauter leeren <li>s ist irgendwie nicht sinnvoll.
PPS: und <a href="#"> ist komplett sinnfrei.
 
Hi,

auf jeden Fall sehen deine zwei Click-Handler sehr komisch aus. Außerdem finde ich die html()-Funktionen an den 3 Stellen auch ein wenig komisch. Hast du mal ausprobiert was passiert, wenn du einen Click-Handler raus nimmst?
 
Zurück
Oben