Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Jquery / Ajax --> verzögerte Aktualisierung

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Jquery / Ajax --> verzögerte Aktualisierung

    Hallo zusammen,

    ich habe kleinere Schwierigkeiten bei dem Zusammenspiel von Ajax im Zusammenspiel mit JQuery.

    Genutzt wird jquery-1.7.1.

    Die einzelnen Skripte funktionieren soweit. Die Daten werden geladen, allerdings nur einmal, dann werden die Daten nicht mehr korrekt nachgeladen.

    PHP-Code:
    <input type="button" value="Aktuell" onfocus="getElementById('news_block').innerHTML=$('#news_block').load('ajax/news.ajax.php')" />
    <
    input type="button" value="Alle" onfocus="getElementById('news_block').innerHTML=$('#news_block').load('ajax/news_all.ajax.php')" /> 
    PHP-Code:
    $db_ajax = new mysqli('1''1' ,'1''1');

    if(!
    $db_ajax) {

        echo 
    'Konnte keine Verbindung zu Datenbank aufbauen, MySQL meldete: '.mysqli_connect_error();

    } else {

    // Bei der anderen Datei, wurde nur das Limit entfernt.,.

        
    $sql 'SELECT
                    chat_user.name,
                    chat_news.news,
                    DATE_FORMAT(chat_news.time, "%d.%m.%Y %T") AS time
                FROM
                    chat_user
                JOIN
                    chat_news
                ON
                    chat_news.userid = chat_user.ID
                ORDER BY  time DESC
                LIMIT 
                     5        
               '
    ;

        if (!
    $stmt $db_ajax->prepare($sql)) {
            return 
    $db_ajax->error;
        }
        if(!
    $stmt->execute()){
            return 
    $stmt->error;
        }
        
    $stmt->store_result();
        
    $stmt->bind_result($name$news$time);
        while (
    $stmt->fetch()) {
            echo 
    "<div id='name'>".$name."</div>";
            echo 
    "<div id='news'>".$news."</div>";
            echo 
    "<div id='time'>".$time."</div>";
            echo 
    "================";
            
    var_dump($news);
        }
        
    $stmt->close();


    Die Daten für die Nachrichten werden über das folgende Skript eingetragen. Meine Schwierigkeiten sind hier, dass sich der Inhalt, nach dem Eintragen nicht ändert, sprich er bleibt auf dem Stand vor dem Eintragen. In der DB, wenn ich via Phpmyadmin schaue, wird der Wert aber eingetragen. Achso, wie bekomme ich das Feld, wo der Wert eingetragen wird ( News_Content ( Textarea wieder leer )). Ich steh hier leider komplett auf dem Schlauch.

    PHP-Code:
    <script>
     $(document).ready(function(){
                    $('#click').click(function(){
                        $.ajax({ 
                            type: 'POST',
                            url: 'ajax/news_post.ajax.php',
                            data: "data="+document.getElementById("news_content").value+"&id="+<?php echo (int)$UserID ?>,
                            success: function(){
                                $('#news_block').load('ajax/news.ajax.php');
                            }
                        });
                    });
    });
    </script>
    Vielen Dank für die Unterstützung im Voraus.

    Edit: Nach ca. 5min, werden die automatisch nachgeladen, dass versteh ich nicht

  • #2
    Hi,

    versuch bitte ein wenig Struktur in deine Fragestellung reinzubekommen. Das ist echt nicht einfach zu lesen / auf den Punkt gebracht.
    Edit: Nach ca. 5min, werden die automatisch nachgeladen, dass versteh ich nicht
    Äpfel? Birnen?

    So wie ich dich verstanden habe, lädt ein Klick auf ein Element deine news nach. Beim 2. Klick aber nicht mehr. Falls dass das Problem sein sollte, setz bei $.ajax den cache-Parameter auf false oder benutze $.ajaxSetup()

    Mysql Errors sollte man nur anzeigen, wenn die Seite auf einem Testserver (und nur da) betrieben wird.
    PHP-Code:
    data: "data="+document.getElementById("news_content").value+"&id="+<?php echo (int)$UserID ?>,
    => data: $('#news_content').val() + ...

    Grüße

    Basti

    Kommentar


    • #3
      Ich hab den Parameter integriert und leider hat dieses auch nichts gebracht.,.

      Die News, werden nur bei den "ersten" Klicks auf den Button geladen, bei den 2. passiert leider nichts mehr. Sprich, es wirds nicht weiter nachgeladen ( news ).

      Ich hab "data:" Bereich auch angepasst, auch hier hat sich leider nichts geändert.

      Hast du noch weitere Ideen, was es sein kann ? Entschuldige die komische Schreibweise, aber ich wusste einfach nicht, wie ich es genau ausdrücken sollte.,.

      Edit: mit ajaxSetup, funktionierte es beim eintragen. Nur wie mach ich das am Besten bei den ".load()" ?

      Edit2:
      PHP-Code:
      onfocus="$.ajaxSetup({ cache: false, }), getElementById('news_block').innerHTML=$('#news_block').load('ajax/news.ajax.php')" /> 
      Damit funktioniert es, danke dir

      Kommentar


      • #4
        Pack das alles in ein domready, verzichte auf inline-attribute und versuch, dass es nicht in einer html-js-Codesuppe endet. Das ist nicht bös gemeint, so hat das jeder mal gemacht und irgendwann gehts ans refakturieren. Und dann ists undefinierter Brei, den du durchwühlen musst.

        Aller Anfang ist auch nicht schwer:
        PHP-Code:
        $(function () { // === $.ready shortcut

        $.ajaxSetup({ cache false });
        $( 
        '#news_block' ).focus(function () {
            $( 
        this ).load'ajax/news.ajax.php' )
        })

        }); 
        Wird zwar, wenns größer wird, immer noch Spaghetti-Code, aber für den Anfang schon mal viel besser.

        Kommentar


        • #5
          Entschuldige, dass ich verspätet auf den Post reagiere.,. Ich habe den Tip mal umgesetzt und bedanke mich dafür
          Ich musste ihn etwas anpassen, da es sich ja um 2 Inhalte handelt, die man laden kann .,.

          Grüße

          Kommentar

          Lädt...
          X