tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
1218
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    sonicks sonicks ist offline Mitglied Gold
    Registriert seit
    Apr 2002
    Ort
    Stuttgart
    Beiträge
    213
    Hi

    Ich lasse mir per PHP 7 Bilder nebeneinander ausgeben, die zu 7 Usern gehören. Jetzt möchte ich bei Klick auf das Bild per jQuery AJAX unterhalb der Bilder die Userdetails anzeigen lassen. Funktioniert auch alles, nur leider übergibt er mir immer nur die letzte ID des zuletzt angezeigten Users:

    Ausgabe der Bilder:

    PHP-Code:
    $sql_img "SELECT * FROM user";
    $result mysql_query($sql_img);
                    
    while(
    $data mysql_fetch_array($resultMYSQL_ASSOC)){
                    
             echo 
    '<a class="profil_img"><img src="'.$data["img"].'" width="220" height="145" alt="Test" class="profil_img"/><input type="hidden" value="'.$data["id"].'" name="user_id" class="user_id" /></a>';
                    
     } 
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    $('.profil_img').click(function() {
                    
    // Loading GIF im Div Containter "Kommentar" anzeigen
    $('#about_wrapper').append('<img src="images/icons/ajax-loader.gif" alt="Lädt gerade..." id="loading" />');
                        
    var user_id = $('.user_id').val();                  
                        
    $.ajax({
                               
      type: 'GET',
      url: 'includes/about.inc.php',
      data: 'user_id=' + user_id,


    Wie kann ich jetzt die richtige ID bei einem Klick auf das jeweilige Bild übergeben?

    MfG
    Stefan
     

  2. #2
    Abro Abro ist offline Mitglied Bronze
    Registriert seit
    Mar 2004
    Ort
    Sauerland (NRW)
    Beiträge
    43
    Naja ganz einfach
    1) du spezifizierst nicht mit "this" dass auch das geklickte element genommen wird. Statt dessen selektierst du alle und .val() liefert dir aus diesem set immer nur das erste.
    2) die klasse .profil_img liegt auch auf dem bild selbst, sobald das klick-ereignis dort auftritt kann natürlich eh kein vernünftiger value ausgelesen werden.

    Code :
    1
    2
    3
    
    $('a.profil_img').click(function(){
      var user_id = $(this).find('input').val();
    });


    ich würd's warscheinlich aber über den url-hash oder zumindest die id lösen statt ein input zu nehmen
    PHP-Code:
    echo '<a href="#'.$data["id"].'" class="profil_img">'
         
    .'<img src="'.$data["img"].'" width="220" height="145" alt="" />'
        
    .'</a>'
    Code :
    1
    2
    3
    
    $('a.profil_img').click(function(){
      var user_id = $(this).attr('href').replace(/^#/,'');
    });
    Geändert von Abro (14.03.10 um 22:34 Uhr)
     
    Mit besten Grüßen, Abro.
    ~ Lucido Media, Internet- & Werbeagentur in Kerpen ~

  3. #3
    sonicks sonicks ist offline Mitglied Gold
    Registriert seit
    Apr 2002
    Ort
    Stuttgart
    Beiträge
    213
    Super, es funktioniert!

    Vielen Dank.


    Eine kurze Frage hätte ich noch: Wenn ich jetzt auf das erste Bild klicke, wird es unten angezeigt. Wenn ich danach auf das zweite Bild klicke, wird das erste immer noch angezeigt und das zweite darunter.

    Eigentlich müsste ich doch am Anfang vom ajax.success einfach ein

    HTML-Code:
    $('#about_wrapper').remove();
    einfügen, damit das nicht mehr passiert oder? Funktioniert leider nicht.


    HTML-Code:
    $('a.profil_img').click(function(){
    				
    					// Loading GIF im Div Containter "Kommentar" anzeigen
    					$('#about_wrapper').append('<img src="images/icons/ajax-loader.gif" alt="Lädt gerade..." id="loading" />');
    
      					var user_id = $(this).attr('href').replace(/^#/,'');
    				
    					$.ajax({
    						   
    						type: 'GET',
    						url: 'includes/about.inc.php',
    						data: 'user_id=' + user_id,
    						
    						success: function(response){
    							$('#about_wrapper').append(response);
    							$('#loading').fadeOut(500, function() {
    								$(this).remove();								 
    							});
    						}
    					
    					});
     

  4. #4
    Abro Abro ist offline Mitglied Bronze
    Registriert seit
    Mar 2004
    Ort
    Sauerland (NRW)
    Beiträge
    43
    pffja ... eigentlich schon irgendwie so:

    Code :
    1
    2
    
    $('#about_wrapper').find('.details').remove()
    .end().append('<div class="details">'+response+'</div>');

    oder so

    Code :
    1
    
    $('#about_wrapper').replaceWith('<div id="about_wrapper">'+response+'</div>');

    oder vergleichbares.

    Kommt halt drauf an was du als response erhälst, schnapp die halt die doku und spiel ein bisschen rum ;o)
    Geändert von Abro (15.03.10 um 00:09 Uhr)
     
    Mit besten Grüßen, Abro.
    ~ Lucido Media, Internet- & Werbeagentur in Kerpen ~

  5. #5
    sonicks sonicks ist offline Mitglied Gold
    Registriert seit
    Apr 2002
    Ort
    Stuttgart
    Beiträge
    213
    Habs mit replaceWith() gelöst!

    Vielen Dank für die Antworten.

    MfG
     

  6. #6
    Abro Abro ist offline Mitglied Bronze
    Registriert seit
    Mar 2004
    Ort
    Sauerland (NRW)
    Beiträge
    43
    Immer doch. Nächstes mal poste ich auch vernünftigen source *G*
     
    Mit besten Grüßen, Abro.
    ~ Lucido Media, Internet- & Werbeagentur in Kerpen ~

Ähnliche Themen

  1. URL per LINK übergeben (Mit Ajax und JQuery)
    Von RoterEstilete im Forum Javascript & Ajax
    Antworten: 4
    Letzter Beitrag: 08.12.10, 23:27
  2. jQuery: Art der Animation übergeben
    Von DiDiJo im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 17.07.10, 10:39
  3. jQuery Variable übergeben?
    Von lisali im Forum Javascript & Ajax
    Antworten: 20
    Letzter Beitrag: 12.06.10, 12:03
  4. [jQuery] Mit Ajax Variable übergeben
    Von newwarrior im Forum Javascript & Ajax
    Antworten: 8
    Letzter Beitrag: 20.03.10, 15:31
  5. jquery autocomplete - Feldinhalt übergeben
    Von NobodyBody im Forum Javascript & Ajax
    Antworten: 0
    Letzter Beitrag: 20.01.10, 09:04