JQuery/Ajax - Probleme bei der Parameterübergabe. Hilfe!

  • Hallo zusammen,


    Edit: das Problem tritt nun auch bei niedrigeren ids als 50 für last auf. hatte ids im 20ziger bereich für last und alles super, dann habe ich weitere einträge gelöscht und für last wurde somit nur noch id 4 übergeben und chat ist leer. also hat mit 50 nichts zu tun, somit kann ich nicht sagen wann der fehler auftritt, nur das er dauernd auftritt, aber die tatsache, dass das script nicht in die if läuft und id_new kein wert bekommt ist nach wie vor gültig.


    ich bin kurz davor Wahnsinnig zu werden! ich habe einen Fehler in meinem script der für mich einfach nur unlogisch ist und ich sehe daher die ursache nicht. ich habe versucht mit der konsole, dem fehler auf die schliche zu kommen. nun den fehler glaube ich gefunden zu haben, aber die ursache nicht. ich hoffe jemand mit mehr erfahrung kann mir weiterhelfen. durch diesen fehler funktioniert das gesamte script nicht und somit komme ich seit 2 tagen nicht weiter und es muss funktionieren.
    möchte sich jemand direkt selbst auf die suche machen und die konsole quälen, dann freut mich das natürlich sehr und hier dafür die seite und logindaten:


    http://www.sparcubes.de
    login: Gast
    pw: gast


    ich fasse mal zusammen was ich rausgefunden habe. relevante script stellen mit bezug poste ich direkt dazu. die vollständigen quellcodes hänge ich unten an. ich hoffe, dass es so besser nachvollziehbar ist.


    noch kurz als vorab info, es handelt sich um einen chat, das sollte vielleicht noch gesagt sein. ^^ so wisst ihr wenn ihr selbst auf der seite schaut auch wenigstens worum es geht. ;)


    das problem was ich habe ist, dass der chatstream irgendwann einfach leer bleibt und keine nachrichten mehr geladen werden.
    Also was habe ich rausgefunden?


    1. habe ich festgestelltdas der fehler auftritt sobald die id-abfrage in der home.php einen wert größer als 50 erhält und als folge plötzlich der chatstream plötzlich leer bleibt.


    Als Bezug dieser Auszug:
    hierbei handelt es sich um die 50. letzte id im chatlog, die beim ersten aufruf ermittelt wird, damit direkt die letzten 50 beiträge im chat sind.

    PHP
    $startid = runSQLQuery ("SELECT id FROM chat_log ORDER BY id DESC LIMIT 49,1");
    $startid = mysql_fetch_array($startid);
    $startid = $startid == false ? "0" : $startid['id'];
    ...
    ...
    ...
    <input type="text" id="last_chat_entry" value="<?php echo $startid; ?>" />


    2. habe ich über die konsole über console.log herausgefunden, dass id_new und last, solange last vom obigen script eine id kleiner gleich 50 erhält, immer die korrekten werte zugewiesen bekommen und alles einwandfrei funktioniert. ABER sobald last über das obige script einen wert größer 50 erhält gibt console.log den korrekten wert für last zurück aber für id_new nur undefined, obwohl id_new = id2 ist, und dieser wert über chatquery.php per ajax ermittelt wird (siehe punkt 3). daher sehe ich den zusammenhang nicht, warum es da zu fehlern kommt und warum bei id größer gleich 50 aber darunter nicht?


    hier als Bezug die chatquery.php:

    PHP
    <?php
    require_once ("../../config.php");
    require_once ("../../connect.db.php");
    $id2 = runSQLQuery ("SELECT id FROM chat_log ORDER BY id DESC LIMIT 0,1");
    $id2 = mysql_fetch_array($id2);
    echo $id2['id'];
    ?>


    3. habe ich im debugging-mode festgestellt, dass id2 (gleich id_new) an der unten markierten scriptstelle (>>> <<<) von chatquery.php den korrekten wert erhält:



    aber das script dennoch nicht in die if-bedingung hineinläuft und wie schon erwähnt id_new nie einen wert erhält, aber zur erinnerung last hat zu jeder zeit den korrekten wert. somit scheint das problem bei id2 zu liegen. diese erhält zwar den korrekten wert von chatquery.php und last hat ebenfalls den korrekten wert, womit die if-bedingung erfüllt wäre, aber das script läuft in die if nicht rein, womit nie loadchat ausgeführt wird und somit nie der chatstream geladen wird. wie gesagt laut debugging erhält id2 den korrekten wert, aber id_new (was gleich id2) wird nie gesetzt, folge script läuft nicht in die if. solange last eine id kleiner 50 hat funzt alles wunderbar.


    4. setze ich in der if-bedingung id2 oder last händisch auf den aktuell entsprechenden wert, dann funktioniert es wieder, was zudem dafür spricht, das es bei der wertübergabe an die if probleme gibt.


    ABER WARUM?


    bis last <= 50 funktioniert alles einwandfrei
    bei last > 50 erhält last nach wie vor den korrekten wert und id2 erhält laut debugging auch den richtigen wert, aber die if wird nie ausgeführt (was sie aber sollte) und id_new = id2 wird nie gesetzt.


    ich finde das alles so unlogisch und sehe absolut nicht die ursache für diesen fehler.


    Nun der gesamte quellcode als Referenz:


    chat.control.js:


    chatquery.php:

    PHP
    <?php
    require_once ("../../config.php");
    require_once ("../../connect.db.php");
    $id2 = runSQLQuery ("SELECT id FROM chat_log ORDER BY id DESC LIMIT 0,1");
    $id2 = mysql_fetch_array($id2);
    echo $id2['id'];
    ?>


    loadchat.php:


    Bitte! Bitte! Bitte! Ich weiß nicht mehr weiter! Bin für jede Hilfe dankbar!
    gruß
    knuff

  • Versuche es mal so


    Nach dem ja wirklich alle Werte vorlagen und nur

    JavaScript
    if( 481 > 50 )

    trotzdem als FALSE gewertet wurde ist das einzig logische das JS einen der werte nicht als Zahl erkannt hat und somit prüfen wollte ob z.B.

    JavaScript
    if( 481 > "abc" )

    was natürlich FALSE ist...

  • Wolf tausendmal danke und noch eine Millionmal dazu!!!! du rettest mein leben!!! dieser fehler ärgert mich seit tagen!


    edit: hast du eine erklärung dafür wie eine der zahlen nicht als zahl erkannt werden konnte? denn bei beiden werten handelt es sich doch um die id aus dem forum die integer formatiert ist?



    vielen, vielen dank!


    gruß
    knuff

  • naja eine der zahlen wird zumindest aus dem html ausgelesen oder? dann kommt sie als string rein. ich weis nicht wie JS mit zahlen und strings auskommt aber ich denke das ist die problematik.. zum anderen kommt die ajax request auch als string rein...!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!