Moribundus: Probleme bei der Textübergabe an JS

Hallo Zusammen,

ich habe folgende PHP-Funktion:

<?php  
  
	// Funktion um vorhandene Menüs zu wählen  
    function select_menu(){  
        $query = ("SELECT menu_id, menu_name, menu_text FROM main_menu WHERE menu_id >'0' ORDER BY sort;");  
        $result = mysql_query($query) OR die(mysql_error());  
		$resArr = array();  
		  
    while($row = mysql_fetch_assoc($result)) {  
        $resArr[] = $row;  
    }  
  
    return $resArr;  
    }	  
?>

und index.php

  
<!DOCTYPE html>  
<html>  
<head>  
.  
.  
.  
<?php  
include('config\config_mysql.php');  
include('qry\mysql_qry.php');  
  
	$menu_name = select_menu();	  
	foreach($menu_name as $main_menu) {  
		$menu_text = $main_menu['menu_text'];  
		echo "<td onClick='inhalt_aendern(\"".$menu_text."\")' class='td_menu_left:hover td_menu_left'>";  
		echo $main_menu['menu_name'];  
		echo "</td></tr>";  
	}  
?>

hier wird dann aus einer Datenbank der Menüname und der Inhalt des Menüs ausgelesen.
Mittels der Funktion inhalt_aendern("".$menu_text."") übergebe ich den Inhalt an die JS Funktion

function inhalt_aendern (aendern) {  
  document.getElementById('table_right_inhalt').innerHTML = aendern;  
}

die auf der selben Seite weiter unten

<div class="no-scrollbar">  
<div class="scroll">  
<table class="main_table_right"><tr><td class="table_right_inhalt" id="table_right_inhalt">  
</td></tr></div></div>

den Menütext aus der Datenbank anzeigt.
Problem ist zum test hatte ich erstmal kurze Texte aber nun wollte ich mit langen Texten und Zeilenumbrüchen weiter machen und muss feststellen das es da Probleme gibt im Debugger bekomme ich folgendes angezeigt:

SyntaxError: unterminated string literal
inhalt_aendern("Dies ist ein Testtext und nun erfolgt ein Absatz...

den Fehler zeigt er beim Anführungszeichen und der Text endet beim Zeilenumbruch, wisst ihr wie ich das beheben kann außer Zeilenumbrüche in den Text als htmlcode einzubauen?

Besten Dank im Vorraus!

  1. Mahlzeit,

    inhalt_aendern("Dies ist ein Testtext und nun erfolgt ein Absatz...

    Mal nur geraten: Da follte ein \n oder ein \r\n und das gibt PHP auch so aus weil die die Backslashes nicht gequotet hast.

    Geraten deshalb, weil du nicht das zeigst, was im Browser ankommt. Der PHP-Code ist erstmal nicht relevant, solange das Problem nicht identifiziert ist.

    --
    42
    1. Mahlzeit,

      inhalt_aendern("Dies ist ein Testtext und nun erfolgt ein Absatz...

      Mal nur geraten: Da follte ein \n oder ein \r\n und das gibt PHP auch so aus weil die die Backslashes nicht gequotet hast.

      Geraten deshalb, weil du nicht das zeigst, was im Browser ankommt. Der PHP-Code ist erstmal nicht relevant, solange das Problem nicht identifiziert ist.

      im browser kommt nichts an, die funktion wird einfach nicht ausgeführt, webseiter verändert sich nicht auch nicht im quelltext, was genau willst du denn wissen?

      1. Mahlzeit,

        was genau willst du denn wissen?

        In diesem Fall will ich wissen, was im error.log steht. Ich lese deinen Post so, dass die Fehlermeldung im Browser (console) ausgegeben wird.

        Also bitte nochmal: Wo kommt die Fehlermeldung?

        --
        42
        1. Mahlzeit,

          was genau willst du denn wissen?

          In diesem Fall will ich wissen, was im error.log steht. Ich lese deinen Post so, dass die Fehlermeldung im Browser (console) ausgegeben wird.

          Also bitte nochmal: Wo kommt die Fehlermeldung?

          hmm ich nahm an das "Debugger" wie ich schrieb klar ist.
          Ja die Fehlermeldung kommt in der console vom Firebug sobald ich darauf klicke aber nur bei einer Box wo die Variable einen langen Text mit zeilenumbrüchen ausliest

          im error.log vom apache steht zu dem Fehler garnichts.

          1. Mahlzeit,

            hmm ich nahm an das "Debugger" wie ich schrieb klar ist.

            Es gibt Debugger für jede Ebene, also für PHP und auch Javascript.
            Ich ging aber solange von der Console aus, bis du geschrieben hast:

            "im browser kommt nichts an,"

            Ja die Fehlermeldung kommt in der console vom Firebug sobald ich darauf klicke aber nur bei einer Box wo die Variable einen langen Text mit zeilenumbrüchen ausliest

            Dann ist deine Aussage, dass im Browser nichts ankommt, falsch. Wenn im Browser nichts ankommt, gibt es auch keine Fehlermeldung in der Console.

            Also beantworte bitte Fragen korrekt, dann verschwenden wir beide keine Zeit ;)

            --
            42
            1. Mahlzeit,

              hmm ich nahm an das "Debugger" wie ich schrieb klar ist.

              Es gibt Debugger für jede Ebene, also für PHP und auch Javascript.
              Ich ging aber solange von der Console aus, bis du geschrieben hast:

              "im browser kommt nichts an,"

              Ja die Fehlermeldung kommt in der console vom Firebug sobald ich darauf klicke aber nur bei einer Box wo die Variable einen langen Text mit zeilenumbrüchen ausliest

              Dann ist deine Aussage, dass im Browser nichts ankommt, falsch. Wenn im Browser nichts ankommt, gibt es auch keine Fehlermeldung in der Console.

              Also beantworte bitte Fragen korrekt, dann verschwenden wir beide keine Zeit ;)

              ich versuche wirklich dir zu folgen aber ich kann es einfach nicht,

              im Browser ankommen meine ich außer in der console sehe ich nichts und wüsste nicht wo ich noch nachschauen sollte, ich hab jetzt schon diverse str_replace versucht aber ohne erfolg

              festgestellt allerdings habe ich das es kein zeilenumbruch ist wo er abschneidet sondern ein whitespace aber andere vorher funktionieren, kann es an der länge liegen?

              sag mir bitte wo du möchtest das ich nachschaue...

              1. Mahlzeit,

                im Browser ankommen meine ich außer in der console sehe ich nichts

                Also kein HTML, kein CSS und kein Javascript? Hast du dir den Quelltext überhaupt angesehen?

                und wüsste nicht wo ich noch nachschauen sollte, ich hab jetzt schon diverse str_replace versucht aber ohne erfolg

                Wo und was genau?

                sag mir bitte wo du möchtest das ich nachschaue...

                Rechtklick -> Seitenquelltext

                --
                42
  2. Tach!

    Problem ist zum test hatte ich erstmal kurze Texte aber nun wollte ich mit langen Texten und Zeilenumbrüchen weiter machen und muss feststellen das es da Probleme gibt im Debugger bekomme ich folgendes angezeigt:

    SyntaxError: unterminated string literal
    inhalt_aendern("Dies ist ein Testtext und nun erfolgt ein Absatz...

    In Javascript sind Zeilenumbrüche mitunter (nicht immer) Anweisungsenden. Der String endet nicht am schließenden Anführungszeichen, sondern am Zeilenende. Und da fehlt ihm dann das abschließende Anführungszeichen. Kontextwechsel nicht beachtet. (Da gibts auch einen Abschnitt zu Javascript.)

    dedlfix.

    1. In Javascript sind Zeilenumbrüche mitunter (nicht immer) Anweisungsenden. Der String endet nicht am schließenden Anführungszeichen, sondern am Zeilenende. Und da fehlt ihm dann das abschließende Anführungszeichen. Kontextwechsel nicht beachtet. (Da gibts auch einen Abschnitt zu Javascript.)

      dedlfix.

      alter, Danke! endlich mal eine sinnvolle Antwort!

      $menu_text = mysql_real_escape_string($menu_text);

      hats gebraucht string wird angezeigt, zeilenumbrüche allerdings sind jetzt gäznlich verschwunden, bekomme ich die wieder rein?

      1. Mahlzeit,

        alter, Danke! endlich mal eine sinnvolle Antwort!

        Gehts noch? In meinem _ersten_ Posting hab ich geschrieben:

        "Mal nur geraten: Da follte ein \n oder ein \r\n und das gibt PHP auch so aus weil die die Backslashes nicht gequotet hast."

        Also exakt das, was du grad als "endlich eine sinnvolle Antwort" bezeichnest.
        Schon ziemlich dreist, nur weil du die Antwort nicht verstehst, zu behaupten, sie ist nicht sinnvoll.

        --
        42
        1. "Mal nur geraten: Da follte ein \n oder ein \r\n und das gibt PHP auch so aus weil die die Backslashes nicht gequotet hast."

          Also exakt das, was du grad als "endlich eine sinnvolle Antwort" bezeichnest.
          Schon ziemlich dreist, nur weil du die Antwort nicht verstehst, zu behaupten, sie ist nicht sinnvoll.

          Jetzt pass mal auf, ich will hier kein Streit vom Zaun brechen aber dreist ist es grundsätzlich zu behaupten das ich deine Antwort nicht verstehe, statt darüber nachzudenken das du dich vll. unklar ausdrückst, wo ich nicht so frech war das pauschal einfach zu behaupten sondern dich extra noch darauf hinwies "ich kann dir nicht folgen"

          bei einer solchen

          "Mal nur geraten: Da follte ein \n oder ein \r\n und das gibt PHP auch so aus weil die die Backslashes nicht gequotet hast."

          völlig aus dem Kontext gerissenen Antwort, brauchst du dich auch nicht in deinem falschen Stolz zu fühlen wenn ein User, der das Problem direkt erkennt (wie du scheinbar ja auch), mir eine sinnvolle Dokumentation zum lesen gibt in der die Lösung zu finden ist.

          Also zieh dich nicht daran auf das ich deine Antwort als "nicht sinnvoll" empfand, denn das ist nur meine Bescheidene Meinung... von deiner herablassenden Kommunikation mal abgesehen...

          1. Mahlzeit,

            völlig aus dem Kontext gerissenen Antwort,

            Hä? Das war 100% des relevanten Inhaltes meines Postings, da gibt es keinen Kontext. Wenn du es nicht verstehst und nicht nachfragst, bist du selber schuld.

            Also zieh dich nicht daran auf das ich deine Antwort als "nicht sinnvoll" empfand, denn das ist nur meine Bescheidene Meinung... von deiner herablassenden Kommunikation mal abgesehen...

            Ui, Sturmverliebt mit neuem Nick. Dafür, dass du es hier scheisse findest, warst du aber nur kurz abwesend ;)

            EOT für mich.

            --
            42
            1. Hä? Das war 100% des relevanten Inhaltes meines Postings, da gibt es keinen Kontext. Wenn du es nicht verstehst und nicht nachfragst, bist du selber schuld.

              wie gesagt, du hast deine und ich meine Meinung...

              Also zieh dich nicht daran auf das ich deine Antwort als "nicht sinnvoll" empfand, denn das ist nur meine Bescheidene Meinung... von deiner herablassenden Kommunikation mal abgesehen...
              Ui, Sturmverliebt mit neuem Nick. Dafür, dass du es hier scheisse findest, warst du aber nur kurz abwesend ;)

              mit welchen User du mich auch immer hier verwechselst, der gefällt mir auf jedenfall, denn er scheint nicht der einzige zu sein der das so sieht

              wenn du meinen Usernamen mal im Forum suchst wirst du feststellen das dieser schon lange vorkommt

              und die Domain zu meinen Nutzernamen moribundus.de kannst du auch gerne mal prüfen dann wirst du auch hier feststellen das ich nicht der bin für den du mich hälst...

              Aber deine voreilige Schlussfolgerung sagt nur noch mehr über deinen Charakter aus...

            2. Hallo,

              Ui, Sturmverliebt mit neuem Nick.

              nein, hier mit an Sicherheit grenzender Wahrscheinlichkeit nicht.

              Ciao,
               Martin

              --
              Fettflecke werden wieder wie neu, wenn man sie regelmäßig mit etwas Butter einschmiert.
              Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      2. Tach!

        $menu_text = mysql_real_escape_string($menu_text);
        hats gebraucht string wird angezeigt,

        Falscher Kontext. Javascript ist kein MySQL-SQL. Bitte schau in den richtigen Abschnitt des verlinkten Artikels. Zu Javascript steht etwas in der Fortsetzung.

        zeilenumbrüche allerdings sind jetzt gäznlich verschwunden, bekomme ich die wieder rein?

        Wo sind sie verschwunden? In der Codeansicht der Webseite sollten sie maskiert zu finden sein. Im HTML-Kontext werden Zeilenumbrüche nur in bestimmten Situationen (beispielsweise präformatierter Text) als solche ausgegeben, ansonsten sind sie Whitespace. Für einen Zeilenumbruch ist dann als br-Element zu verwenden.

        dedlfix.

  3. hi,

    SyntaxError: unterminated string literal
    inhalt_aendern("Dies ist ein Testtext und nun erfolgt ein Absatz...

    Du notierst den Text als Literal im <script>-Bereich, hier müssen Deine Zeilenumbrüche maskiert werden, sonst Fehler weil der Stringterminator nicht gefunden wird.

    Ansonsten beschreib mal, welchen Weg Dein $text von PHP nach JS nimmt. Wenn das übers Template läuft (Platzhalter mit Werten beliefern), gleiches Problem, Lösung: Zeilenumbrüche maskieren.

    Wenn der Weg jedoch Ajax heißt, ist ein Maskieren nicht erforderlich.

    MfG