Ankündigung

Einklappen
Keine Ankündigung bisher.

weboutput(), MAX_ANZ_WAITSTRING zu klein

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

    [Featurewunsch] weboutput(), MAX_ANZ_WAITSTRING zu klein

    Hallo,
    vor ein paar Tagen hatte ich feststellen müssen, das der Text $txt$ beim Aufruf von weboutput(Id,$txt$) abgeschnitten wird. siehe hier
    Das ist nach wie vor der Fall. Ich habe jetzt auch den Grund dafür ausfindig machen können, er liegt bei JavaScript und JSON.
    Im File ajax.js, das der Webserver übermittelt ist die Variable:
    Code:
     line 17: MAX_ANZ_WAITSTRINGS = 1000;
    Habe ich jedoch mehr JSON parts als 1000 dann wird in Zeile 316 von ajax.js eine
    "Uncaught SyntaxError:Unexpected number" exception ausgelöst, die dann den Rest des String abschneidet.

    Setzte ich die Variable testweise auf
    Code:
     line 17: MAX_ANZ_WAITSTRINGS = 2000;
    wird alles wieder dargestellt.

    Bitte MAX_ANZ_WAITSTRINGS höher setzen.

    Alexander

    #2
    Habe mir das Problem letzte Nacht genauer angeschaut.
    Es ist NICHT die Variable MAX_ANZ_WAITSTRINGS !!
    Code:
    MAX_ANZ_WAITSTRINGS = 1000;
    (1000 Controls auf einer Seite sollten ausreichen..)
    sondern es liegt wohl am Server script.
    Tatsächlich gibt das getXMLHttpRequest() Object in ajax.js schon in der function erstinitresponse() auf(ajax.js, line:198) den verkürzten string aus:
    Code:
    function erstinit() 
    {
    	if(req==null)
    	{
    		req = getXMLHttpRequest();
    	}
    	req.onreadystatechange = erstinitresponse;
    	req.open("post", "erstinit", true);
    	req.send(null);
    	if(ENABLE_ERROR_HANDLING==1)
    	{
    		erstinitTimeout = window.setTimeout("errorHandler(ERSTBED)", 2000);
    	}
    }
    
    
    function erstinitresponse()
    {
    	if(req.readyState==4) 
    	{
    		if(ENABLE_SERVER_HEARTBEAT==1)
    		{
    			window.clearTimeout(erstinitTimeout);
    		}
    ==>		var antwort = req.responseText; <= VERKÜRZTER String HIER!!
    		console.debug("erstinit response erhalten: "+antwort);
    Da liegt der Fehler wohl auf der Server Seite.

    alexander

    Kommentar


      #3
      Um die Länge der Strings zu zeigen, hier der fehlerhafte req.responseText gesamt (unformattiert):
      Code:
      {"site":"32","id":"WebElementOutput_1","status":"","value":"   <table width ="100%">                           <tr>                              <td>                                 <font color=navy>Aussen T:</font>                              </td>                              <td>0.0C</td>                              <td>                                 <font color= navy>Wind Speed:</font>                              </td>                              <td>2.18m/s</td>                               <td>                                 <font color=navy>Regen:</font>                              </td>                              <td><font color=gray>Nein</font></td>                           </tr>                           <tr>                              <td>                                 <font color=navy>Hellichkeit:</font>                              </td>                              <td>000lux</td>                              <td colspan="4" align="right">00.00.2000 ,  ?, 00:00:00</td>                           </tr>           </table>","valueDec":"1"}{"site":"32","id":"WebElementOutput_3","status":"","value":"   <table width ="100%" border="0">   <tr>      <td colspan="2">         <u><font color=navy >Raum West: </font></u>(xx.xC)      </td>      <td colspan="2">         <u><font color=navy >Raum Ost: </font></u>         (7.4C)      </td>      <td colspan="2">         <u><font color=navy >Bad: </font></u>         (<font color="red">0.0C</font>)      </td>   </tr>   <tr>      <td>         <font color=navy >Rad</font>        </td>      <td >0%</td>       <td>         <font color=navy >Rad</font>      </td>      <td ><font color="yellow">SBY</font></td>      <td>         <font color=navy >Rad</font>      </td>       <td ><font color="yellow">100%</font></td>   </tr>   <tr>    <td>         <font color=navy >FBH</font>      </td>      <td ><font color="yellow">SBY</font></td>      <td>         <font color=navy >FBH</font>      </td>      <td ><font color="yellow">100%</font></td>      <td>         <font color=navy >FBH</font>      </td>      <td ><font color="yellow">100%</font></td>   </tr>   <tr>      <td colspan="4">          </td>      <td>         <font color=navy >Hum.</font>      </td>      <td>52.7%</td>   </tr>   <tr>      <td colspan="2">      test1      </td>      <td>         <font color=navy >min</font>      </td>      <td><font color="yellow">21.0C</font></td>      <td>         <font color=navy >Boost</font>      </td>      <td>Off</td>   </tr>   <tr>      <td colspan="2">","valueDec":"1"}{"site":"32","id":"WebElementSingle_2","status":"64_1","value":"Off
      ","valueDec":"0","uSelection":"0"}{"site":"32","id":"WebElementDouble3_1","status":"44_0","value":"Sby: Min:21.0C / Ist:7.4C
      ","valueDec":"3","uSelection":"0"}{"site":"32","id":"alive","status":"18","value":"60"}"
      Und dies ist der Teil des req.responseText der das weboutput() control mit abgeschnittenen Text betrifft:
      Code:
      {"site":"32","id":"WebElementOutput_3","status":"","value":"   <table width ="100%" border="0">   <tr>      <td colspan="2">         <u><font color=navy >Raum West: </font></u>(xx.xC)      </td>      <td colspan="2">         <u><font color=navy >Raum Ost: </font></u>         (7.4C)      </td>      <td colspan="2">         <u><font color=navy >Bad: </font></u>         (<font color="red">0.0C</font>)      </td>   </tr>   <tr>      <td>         <font color=navy >Rad</font>        </td>      <td >0%</td>       <td>         <font color=navy >Rad</font>      </td>      <td ><font color="yellow">SBY</font></td>      <td>         <font color=navy >Rad</font>      </td>       <td ><font color="yellow">100%</font></td>   </tr>   <tr>    <td>         <font color=navy >FBH</font>      </td>      <td ><font color="yellow">SBY</font></td>      <td>         <font color=navy >FBH</font>      </td>      <td ><font color="yellow">100%</font></td>      <td>         <font color=navy >FBH</font>      </td>      <td ><font color="yellow">100%</font></td>   </tr>   <tr>      <td colspan="4">          </td>      <td>         <font color=navy >Hum.</font>      </td>      <td>52.7%</td>   </tr>   <tr>      <td colspan="2">      test1      </td>      <td>         <font color=navy >min</font>      </td>      <td><font color="yellow">21.0C</font></td>      <td>         <font color=navy >Boost</font>      </td>      <td>Off</td>   </tr>   <tr>      <td colspan="2">","valueDec":"1"}

      Kommentar


        #4
        Wie du richtig erkannt hast wird scheinbar schon serverseitig der JSON Wert "value" abgeschnitten, weil "[...],"valueDec":"1" und den Abschluss der JSON Nachricht "}" hängt er ja wieder korrekt an.
        Wir sind gerade an der Überarbeitung des Update Prozesses der globalen Elemente und werden uns das in diesem Zusammenhang ansehen.
        Firma: Enertex Bayern GmbH, Ebermannstädter Straße 8, 91301 Forchheim
        Amazon: KNXnet/IP Router
        , KNXnet/IP Interface

        Kommentar


          #5
          Dreams...

          Es wäre super, wenn der Text der Webelemente wie bei objektorientierten Programmiersprachen angesprochen werden könnte. In etwa "btnWzLicht.Text".

          Und weil ich gerade in Fahrt komme, warum eigentlich nicht gleich
          • btnWzLicht.Text
          • btnWzLicht.Textcolor
          • btnWzLicht.Caption
          • btnWzLicht.Icon


          Ein kleiner Wunschtraum von mir...

          Kommentar


            #6
            Zitat von klaus_kraemer Beitrag anzeigen
            Es wäre super, wenn der Text der Webelemente wie bei objektorientierten Programmiersprachen angesprochen werden könnte.
            Bevor hier wieder die üblichen Verdächtigen sich ran hängen:
            Die Programmierung/Sprache des EibPCs soll die alltäglichen Aufgaben einfach machen. Daher wurde eine funktionale Orientierung gewählt. Natürlich kann man das alles ändern, ich sehe auch die Bequemlichkeit und den Sinn dieser Anforderungen.
            Andererseits: Wer schon mal bei uns im Support war, der wird selbst eine "nachvollziebare" Forderung wie die nach einer switch-Anweisung sofort in Frage stellen. Jetzt kann man ja sagen: Nun, dann muss der Anwender das ja nicht nutzen. Aber die Realität schaut so aus, dass er auf den ersten Blick für ihn Undurchsichtiges entdeckt und sich gleich was anderes sucht oder eben das auch nutzten will, ohne das richtig verstanden zu haben.
            offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
            Enertex Produkte kaufen

            Kommentar


              #7
              Ich versteh' Dich ja - leider...

              Allerdings halte ich eine switch-Anweisung für wesentlich einfacher, als zigfach verschachtelte if- Anweisungen

              Kommentar


                #8
                Sorry, ich verstehe Michael nicht!

                1. Wenn Supportanfragen kommen verkauft sich das Produkt ja offensichtlich.
                2. Bevor man sich über die Supportaufwände beschwert sollte man sich fragen, ob es nicht am Produkt liegt. Die Nutzer pauschal als unfähig hinzustellen ist unpassend.
                3. Wenn zu viele Supportanfragen kommen, sollte man das Produkt verbessern, was nicht nur "neue Features" bedeutet. Anregungen für Optimierungen gibt es im Forum genug.

                Just my two cents.
                BR
                Marc

                Kommentar


                  #9
                  Zitat von saft6luck Beitrag anzeigen
                  2. Bevor man sich über die Supportaufwände beschwert sollte man sich fragen, ob es nicht am Produkt liegt. Die Nutzer pauschal als unfähig hinzustellen ist unpassend.
                  Na genau das meine ich. Für den Standard Anwender ist eine if-Anweisung noch ok, eine switch-Anweisung ist erklärungsbedürftig - und das liegt nicht am Anwender. Und erklärungsbedürftig soll es eben nicht werden.
                  Damit das
                  3. Wenn zu viele Supportanfragen kommen
                  eben nicht passiert.
                  offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                  Enertex Produkte kaufen

                  Kommentar


                    #10
                    aber wie sollen wir denn da etwas LERNEN??
                    wenn uns keiner etwas erklären will
                    EPIX
                    ...und möge der Saft mit euch sein...
                    Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

                    Kommentar


                      #11
                      Zitat von enertegus Beitrag anzeigen
                      Na genau das meine ich. Für den Standard Anwender ist eine if-Anweisung noch ok, eine switch-Anweisung ist erklärungsbedürftig - und das liegt nicht am Anwender. Und erklärungsbedürftig soll es eben nicht werden.
                      Explizit bei der if-Anweisung fängt das Problem ja an: Sie ist nicht einheitlich anzuwenden - unterschiedliche Ebenen werden unterschiedlich behandelt.

                      Die Anfragen im Forum zeigen leider, dass genau hier schon das Verständnis auseinander läuft. Auf einfachste Fragen kommen unterschiedlichste Antworten, von "so gehts nicht" bis "ganz genau richtig" ist alles dabei.

                      Es kann doch nicht sein, dass es nur ein paar Einäugige unter lauter Blinden gibt. Und die verstecken sich dann noch in einem Beta-Forum?

                      Um beim Beispiel zu bleiben: switch-case ist mindestens so einfach wie die if-Abfrage. Und wenn man sich mal die Mühe machen würde, darüber zu reden wie man das implementieren könnte, dann würde evtl. auch eine leicht verständliche Lösung dabei rauskommen. Eine Lösung ohne 1000 Hintertürchen, Stolperfallen und Ausnahmen!
                      BR
                      Marc

                      Kommentar


                        #12
                        Zitat von saft6luck Beitrag anzeigen
                        ...

                        Um beim Beispiel zu bleiben: switch-case ist mindestens so einfach wie die if-Abfrage. Und wenn man sich mal die Mühe machen würde, darüber zu reden wie man das implementieren könnte, dann würde evtl. auch eine leicht verständliche Lösung dabei rauskommen. Eine Lösung ohne 1000 Hintertürchen, Stolperfallen und Ausnahmen!
                        Eine Switch-Anweisung ist mit Sicherheit übersichtlicher und einfacher, als jede mehrfach verschachtelte if-Anweisung. Also

                        Kommentar


                          #13
                          Wenn ihr schon meinen Thread gekapert habt:
                          Ich schreibe seit ein paar Wochen für den EibPC und stolpere ständig über irgendwelche "Ungereimtheiten", derletzt erst wieder :
                          beim "if" construct können in einem cycle sowohl der "then"-Block als auch der "else"-Block ausgeführt werden.
                          Das steht auch so ganz korrekt im Handbuch, ist aber ein "Feature", das bei erstmaligen Auftreten zumindest bei mir nicht gleich "erkannt" wird.

                          Trotzdem finde ich die EibPC-Sprache gut brauchbar. Debugger und write() statements erlauben ja auch gute Einsichten.

                          Zitat von enertegus Beitrag anzeigen
                          Für den Standard Anwender ist eine if-Anweisung noch ok, eine switch-Anweisung ist erklärungsbedürftig - und das liegt nicht am Anwender. Und erklärungsbedürftig soll es eben nicht werden.
                          Damit das eben nicht passiert.
                          Aber genau das kann ich NICHT nachvollziehen!
                          Diese Sprache IST erklärungsbedürftig, aber, die Dokumentation ist gut, und es gibt dieses Forum! Wo liegt also das Problem?

                          Akzeptiert, das die EibPC-Sprache eben nicht selbsterklärend ist, aber verhindert bitte nicht sinnvolle Verbesserungen mit dem Argument, alles würde dadurch "erklärungsbedürftig".

                          Ich hätte übrigens gerne collections....

                          Gruß,

                          alexander

                          Kommentar


                            #14
                            Zitat von saft6luck Beitrag anzeigen
                            Es kann doch nicht sein, dass es nur ein paar Einäugige unter lauter Blinden gibt. Und die verstecken sich dann noch in einem Beta-Forum?
                            Kann ich überhaupt nicht nachvollziehen.

                            Ich bin in den EibPC eingestiegen mit Basic/Assembler Wissen aus meiner Jugend (C64), TurboPascal aus dem Studium und etwas HTML Know How. Die if Abfragen habe ich immer als sehr einfach empfunden.

                            Es versteckt sich auch niemand im Beta Forum. Dort wird nur auf einem höheren Wissensniveau diskutiert.

                            Was mir hier im Forum aber immer häufiger auffällt, ist Genöhle (anstatt konstruktive Anregungen), wachsende Dreistigkeit andere die eigene Arbeit erledigen zu lassen und sehr gering entwickelte Bereitschaft sich einmal selbst mit einer Problemstellung intensiv auseinanderzusetzen.

                            Da wird einmal etwas 3x ausprobiert, dann der EibPC verteufelt und dann gleich die Allgemeinheit eingespannt.

                            Eines meiner ersten Projekte war eine dynamische Anwesenheitssimulation. Daran habe ich 3-4 Monate (!!!) herumgebastelt ohne das Forum zu bemühen. Anschliessend konnte ich den EibPC gut handeln.

                            Kommentar

                            Lädt...
                            X