jquery live update

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • jquery live update

    HiHo,

    Ich würde gerne den Status in der Datenbank von 0 auf 1 setzten per ajax.
    Dazu würde ich gerne jquery nutzen. Ich habe mir dazu ein vorhandenes Script genommen ryancoughlin.com/2008/11/04/use-jquery-to-submit-form/ das mit input Feldern arbeitetund versucht es anzupassen.
    Es sollte Anstatt den Inhalt eines Input Feldes eine ID übermittel, dies tut es aber nicht. Ich denke mal der Ansatz ist nicht verkerht braucht aber noch ein wenig Feinschliff.

    Hier mal meinen Code

    Source Code

    1. <script type"text/javascript">
    2. $(document).ready(function(){
    3. $("form#submit").submit(function() {
    4. // we want to store the values from the form input box, then send via ajax below
    5. var fname = $('#button2').attr('value');
    6. $.ajax({
    7. type: "POST",
    8. url: "update.php",
    9. data: "fname="+ fname,
    10. success: function(){
    11. $('form#submit').hide();
    12. //$('form#submit :input').val("");
    13. $('div.success').fadeIn();
    14. }
    15. });
    16. return false;
    17. });
    18. });
    19. </script>
    Display All


    Source Code

    1. <form id="submit" method="post" name="submit" action="">
    2. {$STATUS_ID} <button type="submit" id="button2" value="2"><img src="./theme/images/ok.png"></button>
    3. </form>
    4. <div class="success" style="display:none;">
    5. <p>Client has been added.</p>
    6. </div>


    In desem Fall soll er die ID 2 an update.php übermitteln.
    Wie müsste es richtig aussehen?
  • Hi,

    warum steckt denn deine ID in deinem Button? Das ist nicht besonders schön, erstell hierfür lieber einen neuen Container.

    Source Code

    1. <button type="submit" id="button2" value="2">



    Ansonsten sieht es richtig aus, wie du es gemacht hast. Wo liegt deine update.php? Wird diese korrekt aufgerufen? Das kannst du ganz schnell herausfinden, wenn du die Debug- Javascriptkonsole des Browsers (ich empfehle Chrome oder Safari) öffnest und beim Netzwerk/Network Reiter schaust, was dein Request verschickt, aufgerufen und zurückbekommen hat. (Vermutung : 500 Internal Server Error)
  • HiHo,

    Habe mich nun doch für eine bessere Variante entschieden aber dort gibt es ein Problem, er übermittelt den POST wert nicht
    Hier erstmal der Code

    Source Code

    1. <script type="text/javascript">
    2. function performAjaxSubmission() {
    3. $.ajax({
    4. url: 're_update.php',
    5. method: 'POST',
    6. data: {
    7. val: $(this).attr("db_value")
    8. },
    9. success: function() {
    10. alert("success!");
    11. }
    12. });
    13. return false; // <--- important, prevents the link's href (hash in this example) from executing.
    14. }
    15. jQuery(document).ready(function() {
    16. $(".linkToClick").click(performAjaxSubmission);
    17. });
    18. </script>
    Display All


    Source Code

    1. <a href="" class="linkToClick" db_value="41"><img src="./theme/images/ok.png" /></a>


    Source Code

    1. $DB->sql('UPDATE ' . INVOICES . ' SET `status_id` = 1 WHERE `r_id` = ' . $_POST['db_value']);
    2. $DB->execute();
    3. $DB->free();


    Er übermittelt die ID 41 einfach nicht. WHERE `r_id` = 41 das klappt, also kann es nur an dem JS Code liegen.
  • Wenn ich das richtig sehe, übermittelst du die Variable 'val' mit dem Wert.
    val: $(this).attr("db_value")

    Du müsstest also val: mit 'db_value': ersetzen.

    Schreibe ansonsten mal ein var_dump($_POST); vor die Datenbankabfrage. Außerdem solltest du ganz dringend etwas zum Thema MySQL Injection lesen: de.wikipedia.org/wiki/SQL-Injection
    Jan Thurau
    Software and Systems Engineer
    janthurau.de

    [Blocked Image: http://www.pageheroes.com/media/image/pageheroes_logo.png] - We get your page working!
  • Jan Thurau wrote:



    Du müsstest also val: mit 'db_value': ersetzen




    Leider brachte dies kein Erfolg.

    Ein var_dump davor bringt array(0) { } zum vorschein. Also der POST Parameter wird weiterhin nicht übermittelt.
    Beim Klick auf den Link wird die re_update.php definitiv aufgerufen. Ersetze ich $_POST['db_value'] durch 41 im SQL und klicke auf den Link wird der status auf 1 gesetzt.



    OT:

    Jan Thurau wrote:





    Außerdem solltest du ganz dringend etwas zum Thema MySQL Injection lesen: de.wikipedia.org/wiki/SQL-Injection


    Hehe ne, den $_POST habe ich nur für das Forum hier direkt in den SQL geschrieben, zur besseren Übersicht ;)

    So sieht es in wirklichkeit aus



    Source Code

    1. $DB->sql('UPDATE ' . INVOICES . ' SET `status_id` = 1 WHERE `r_id` =:1');
    2. $DB->execute($_POST['db_value']);




    :1 wird ersetzt durch $_POST['db_value'], :2 durch einen weiteren Parameter im execute. Dort durchläuft er Automatisch mysql_real_escape_string und falls magic_quotes aktiviert ist auch stripslashes

    The post was edited 1 time, last by Fragz ().