2010-12-13 8 views
0

Ich möchte eine einfache Funktionalität zu meinen Seiten hinzufügen, wo ein Benutzer eine Schaltfläche "folgen" sehen und indem Sie darauf klicken, wird ein Datenbank-Datensatz erstellt (Benutzer-ID und Seiten-ID). Ich nehme an, dass die Abfrage im Backend erfolgt. Ich denke, ich muss es in AJAX machen, aber ich habe nicht viel mit AJAX gemacht. Ich dachte auch, dass das Aktualisieren des Schaltflächenstatus von FOLLOW zu FOLLOWING (oder etwas Ähnlichem) ich mit jQuery tun könnte, mit einer Art Toggle, während die Anfrage im Hintergrund bearbeitet wird.Müssen Funktion hinzufügen

Bin ich damit auf dem richtigen Weg?

+0

Das klingt gut. Die einzige Sache, die ich verbessern würde, ist, dass Sie "FOLLOW" nicht in "FOLLOWING" ändern sollten, bis Sie von Ihrer AJAX-Anfrage bestätigt bekommen, dass die Datenbank korrekt aktualisiert wurde. Sie können einen Spinner während der Verarbeitung anzeigen. Ansonsten klingt das ziemlich einfach. Brauchen Sie Hilfe bei der Umsetzung oder war das nur eine Frage "Bin ich auf der richtigen Spur?"? – AgentConundrum

Antwort

2

Sie sind auf dem richtigen Weg.

Ich habe ein Beispiel erstellt, das eine Schaltfläche wie <input type="image" class="follow"> verwendet. Wenn ich Benutzer darauf klicke sendet es eine Anfrage an den Server (URL). Bei Erfolg aktualisiert es das Schaltflächenbild.

$('input[type=image].follow').click(function() { 
    var button = $(this); 
    var current_img = $(button).attr('src'); 
    var current_alt = $(button).attr('alt'); 

    $(button).attr('src', '/style/icons/ajax-loader.gif'); 
    $(button).attr('alt', 'Requesting data from the server...'); 

    $.ajax({ 
     url: url of script the processes stuff (like db update), 
     type: 'POST', 
     data: {}, 
     dataType: "json", 
     error: function(req, resulttype, exc) 
     { 
     $(button).attr('src', '/style/error.png'); 
     $(button).attr('alt', 'Error while updating!'); 
     window.setTimeout(function() { 
      $(button).attr('src', current_img); 
      $(button).attr('alt', current_alt); 
     }, 3000); 
     }, 
     success: function(data) 
     { 
     $(button).attr('src', '/style/followed.png'); 
     $(button).attr('alt', 'Followed'); 
     } 
    }); 

    return false; 
    }); 

Oben ist nur ein Beispielcode. Ändern Sie es nach Ihrem Willen. Viel Spass damit.

+0

Cool, danke für das Beispiel. Wie würde ich ein paar Variablen an die PHP-Seite übergeben, die die Anfrage verarbeitet? Wäre das in URL: mypage.php? Var1 = a & var2 = b oder in Daten: {}? Vielen Dank. – santa

+0

Ich finde es "sauberer", die Variablen zu Daten hinzuzufügen, da sie POST anstelle von GET verwenden werden. Aber das könnte nur ich sein :) – PeeHaa

+0

Ich benutze eine Klasse, die die URL verschlüsselt, so dass meine Vars sicher URL übergeben werden, aber ich sehe Ihren Punkt und wird wahrscheinlich POST in diesem Fall verwenden. Ich muss noch herausfinden, wie man Daten weitergibt. Ich werde einfach eine Testseite erstellen und experimentieren. Nochmals vielen Dank für das tolle Beispiel. – santa

1

AJAX hat Recht, jQuery macht Ajax einfach.

//Post with jQuery (call test.php): 
$.post('test.php', function(data) { 
    //Do something with result data 
}); 
0

Es klingt, als ob Sie hier auf dem richtigen Weg sind. Wenn Sie mit einer kleineren Anwendung arbeiten, dann wäre die Verwendung einer AJAX-Anfrage und die Erstellung Ihres Datensatzes am einfachsten mit einem Java-Servlet und dem Einfügen von beispielsweise JDBC-Code in Ihre doGet- oder doPost-Methode zur Durchführung der Datenbankoperationen. Gleichzeitig kann Ihre onSuccess-Methode für Ihre AJAX-Anforderung den jQuery-Code aufrufen, der zum Aktualisieren Ihrer Schaltfläche erforderlich ist. Viel Glück!

Verwandte Themen