• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Probleme mit click Event und jquery

flashspys

Mitglied
Ich habe einen ganz einfachen jQuery Code:

Code:
$('.buy').live('click', function() {
        var id = $(this).attr("id");
        var area = $('input:radio[name=radio]:checked').val();
        var data = 'gebid=' + id + '&area=' + area +'&query=12';
        $.ajax({
            url: 'datei.php',
            type: 'GET',        
            data: data,
            success: function (reqCode) {
                if(reqCode == 1) {
                    $('div#result').writeAlert("Erfolgreich gekauft").fadeIn();
                } else {
                    $('div#result').writeError(reqCode).fadeIn();
                }
                
            }
        });
        
        return false;
    });
vom Code her sollten ja keine Probleme auftauchen. Nur wenn ich jetzt auf den Button 1x draufdrücke werden gleichzeitig 5 ajax-Abfragen gestartet (was in meinem Fall böse Folgen hat)

beweis in den Fotos -> Bildschirmfoto 2011-05-07 um 00.56.06.png
(sry für den Link aber ich kann momentan hier iwie kein Anhang hochladen)


und das passiert wirklich nur nach einem einzigen Klick.

Was läuft da schief
 
Hallo,
ich bin kein jQuery Experte, aber ich glaube einen Fehler in Zeile 5 gefunden zu haben:
Code:
$.ajax({
Ich glaube da sollte die Syntax doch so aussehen:
Code:
$('.ajax').aktion({
In Zeile 11 und 13 ist glaube ich noch etwas nicht ganz richtig.
Zeile 11:
Code:
$('div#result').writeAlert("Erfolgreich gekauft").fadeIn();
Zeile 13:
Code:
$('div#result').writeError(reqCode).fadeIn();
Bei beidem kannst du das "div" weglassen, sprich:
Code:
$('#result')....
Kann aber auch sein dass ich falsch liege.

Mit freundlichen Grüßen
 
Ich hab leider noch nie mit dem live Event-handler gearbeitet. Aber das er mehrere Events auf einmal abfeuert könnte daran liegen. Wie siehts denn aus wenn du bind anstatt live verwendest?
Und dein Ajax schaut übrigens richtig aus unter der bedingung, dass deine PHP Datei eine 1 ausgibt wenn alles ok war.
writeError undwriteAlert sind JQuery-Plugins? Wenn nicht habe ich leide rnichts zu den Funktionen in der JQuery Doku gefunden :)
Wie oben schon gesgat. Probier mal bind anstatt live :)
 
Tut mir Leid, ich hätte natürlich mal mehr den Code erklären müssen. Also ja die PHP-Datei gibts im erfolgfall natürlich 1 aus. writeAlert/Error sind funktionen die auch existieren sowie funktionieren.

Vielleicht sollte ich noch sagen, dass diese Klasse durch jqueryui's funktion "button" gestylt wurde, ich weiß nicht ob das auswirkungen hat :/

Die Anzahl der zuvielen Ajax abfragen variiert leider. Mein Rekord lag bei 8 (inherhalb von Millisekunden :( )!

Ich bin echt ratlos. Ich bedanke mich jetzt schonmal für eure Vorschläge und werde sie gleich mal alle ausprobieren :) Ich schreibe dann, ob sie funktionierten...

Aber trotzdem vielen, vielen Dank :)


//EDIT

Also ich habe folgendes gemerkt: wenn ch das 2x auf die seite gehe, werden 2 ajax abfragen geschickt.. wenn ich das dritte mal die seite aufrufe werden 3 stk. abgeschickt.

Dazu sollte ich sagen, dass oben genannten "Seitenaufrufe" nicht direkt welche sind, dort wird nur mit ajax reingeladen :/
 
Zuletzt bearbeitet:
Also ich habe folgendes gemerkt: wenn ch das 2x auf die seite gehe, werden 2 ajax abfragen geschickt.. wenn ich das dritte mal die seite aufrufe werden 3 stk. abgeschickt.

Dazu sollte ich sagen, dass oben genannten "Seitenaufrufe" nicht direkt welche sind, dort wird nur mit ajax reingeladen :/

Das könnte schon alles klären. Das Script wird auch immer jedes mal per Ajax nachgeladen?
Wenn ja wird bei jedem "Seitenaufruf" ein weiterer Eventhandler angehängt an deine Elemente. Du solltest vielleicht beim Seitenstart ein unbind auf alle Elemente machen :)
 
Zurück
Oben