mehrfache Ajax Requests trotz uniqueid()

Hallo zusammen!

Ich habe eine Webseite die mittels Ajax einen Bereich aufbaut der mehere Ajax Links beinhaltet. Der 1. Request funktioniert so lange problemlos bis das die Ajax Links generriert werden, denn diese (so vermute ich) lösen weitere Ajax Requests aus wodurch der 1. Request nicht abgeschlossen wird und meine


$(document).ajaxStop(function(){ abcFunktion(1);})

nicht ausgelößt wird.

Es gibt im wiki ja schon einen Eintrag dazu wie man mehrfache Ajax Requests verhindert, aber die Verwendung von uniqueid hat nicht geholfen. "undelegate" hat auch nichts gebracht, wobei (sofern ich es richtig verstanden hab) diese Funktion eher kontraproduktiv ist, weil der Ajax Link weiterhin funktionieren soll.

Ajax Button der die Ajax Links generiert




                            echo CHtml::ajaxSubmitButton(

                                    Yii::t('UI', 'show'),           //label

                                    array('myaccount/content'),     //url

                                    array('update'=>'#main_content',),  //ajax Options

                                    array(                              //html Options

                                        'class'=>'button_right',

                                        'style'=>'cursor:pointer;',

                                        'id' => 'send-link-'.uniqid(),

                                    ));



generrierte Ajax Links ($i=Laufvariable)




            echo CHtml::ajaxLink(

                '<img src="images/account/icon_details.gif" alt="Details"/>',     //label

                array('myaccount/content'),     //url

                array(  //ajax Options

                    'type'=>'POST',

                    'update'=>'#details'.$i,

                    'data'=>array( //POST Variables

                        'tab'=>'2',

                        'id'=>$i),

                ),

                array(  //html Options

                    'id' => 'unique-link-'.microtime(), //to avoid mulitible Ajax Loads->doesn't work

                    )

            );



Hat jemand eine Idee wo das Problem liegt und warum mehrere Requests abgesendet werden?

Viele Grüße,

capo

Erst mal hast du das Problem schon gelöst ??

Wie sieht denn dein Controller aus in der Action fängst du ja mit Yii::app()->request->isAjaxRequest die Ajax Request ab ich denke dann das du auch die beiden Links dann unterscheides ob der User denn Link oder denn Submit Button gedrückt hatt nach jedem Ajax request evt ein Yii::app()->end() oder exit; könnte evt helfe hoffe ich mal ^^ .

Hallo,

Naja Problem gelöst… Ich hab jetzt einfach den Ajax Request in eine JS Function ausgelagert. U.a. auch weil ich mehere Aktionen mit dem Klick des Links auslösen wollte. So kann ich jetzt deinen Lösungsvorschlag nicht ausprobieren, könnte aber funktionieren.

Danke, noch ein schönes Wochenende :)

capo

Kannst du deine Lösung hier noch posten. Würde mich und sicher einige andere auch interessieren wie du es gelöst hast.

Sicher :)

Also hier das JS mit der Funktion die einen AJax Request absetzt (ich weiß der Link is suboptimal, um eine elegantere Lösung kümmer ich mich gleich )




    function toggleMe(id){

        if ($('#details'+id).is(":hidden")){

            if($('#details'+id).children().size() ==0){//lädt inhalt nur rein wenn noch nichts (aus einem früheren Ajax Request) vorhanden ist, sonst wird der Inhalt bei jedem öffnen erneut reingeschrieben

                $.post('http://localhost/relaunch/index.php?r=MyAccount/content', //Link zum verarbeiteten Controller

                        { id: id, tab: "2"}, //POST Variablen + Werte

                        function(data) { $('#details'+id).append(data); }//Daten aus Ajaxrequest schreiben

                );

            }

        }

        $('#details'+id).slideToggle("slow");

    }



in zB.


<div id="details1">INHALT AUS AJAX REQUEST</div>

wird der Inhalt des Ajax Request geladen.

So sieht der auslösende Link aus (bzw in meinem Fall ein Bild mit Link-Funktion (gibt hierbei sicher auch ne schönere Lösung):


<img src="images/account/icon_details.gif" alt="Details" style="cursor:pointer;" onclick="javascript:toggleMe('<?php echo $i;?>')" />

Vielleicht hilfts jemanden weiter. :)

lg capo