Ajax Laufzeitproblem – SELFHTML-Forum Forum als Ergänzung zum SELFHTML-Wiki und zur Dokumentation SELFHTML https://forum.selfhtml.org/self Ajax Laufzeitproblem Fri, 30 Oct 09 20:02:11 Z https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404636#m1404636 https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404636#m1404636 <p>hi,</p> <p>s. Thema. Das Teil ist testweise online als</p> <p><a href="http://rolfrost.de/cgi-bin/talk.cgi" rel="nofollow noopener noreferrer">Talk</a></p> <p>Prob.: Immer dann, wenn setInterval() alle 5 s greift und dabei gleichzeitig was geschrieben wird, geht der Request in die Hose. Mein erster Versuch ist es, mit 2 XHR-Objekten zu arbeiten, wird aber nichts.</p> <p>Ideen? Haut mal rein und schaut Euch das bitte mal an.</p> <p>viele Grüße,<br> Horst Schnatterente</p> Ajax Laufzeitproblem Fri, 30 Oct 09 20:39:21 Z https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404652#m1404652 https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404652#m1404652 <blockquote> <p>Ideen?</p> </blockquote> <p>das XHR-Objekt Funktionslokal machen, sonst überschreibst du dir das Objekt mit den neuen Daten bei  mehreren Requests gleichzeitig.</p> Ajax Chat noch ne Frage Sat, 31 Oct 09 10:10:40 Z https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404643#m1404643 https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404643#m1404643 <p>Moin,</p> <blockquote> <p>s. Thema. Das Teil ist testweise online als</p> <p><a href="http://rolfrost.de/cgi-bin/talk.cgi" rel="nofollow noopener noreferrer">Talk</a></p> </blockquote> <p>Die RaceCondition hab ich beseitigt, danke schonmal. Die RC gibts nur noch, wenn zu oft kurz hintereinander Enter gedrückt wird, das werde ich serverseitig lösen (irgendwann).</p> <p>Jetzt haben wir noch das "Flackern" (danke für den Hinweis), bei jedem setInterval-Reload wird die Liste gelöscht und neu geschrieben, um das zu beseitigen sehe ich 2 Möglichkeiten:</p> <p>1- die <ul id='talk'> nur dann neu schreiben, wenns was Neues gibt, dazu ein Zweites temp. array Clientseitig führen</p> <p>2- die Chat-Liste einmal schreiben beim Starten und jeden neuen Eintrag dranhängen</p> <p>Ich lass mir das mal durch den Kopf gehen, Hinweise dazu lese ich auch gerne.</p> <p>Viele Grüße,<br> Horst SmallTalker</p> Ajax Laufzeitproblem Mon, 02 Nov 09 08:10:20 Z https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404637#m1404637 https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404637#m1404637 <blockquote> <p>s. Thema. Das Teil ist testweise online als</p> <p><a href="http://rolfrost.de/cgi-bin/talk.cgi" rel="nofollow noopener noreferrer">Talk</a></p> <p>Prob.: Immer dann, wenn setInterval() alle 5 s greift und dabei gleichzeitig was geschrieben wird, geht der Request in die Hose. Mein erster Versuch ist es, mit 2 XHR-Objekten zu arbeiten, wird aber nichts.</p> <p>Ideen? Haut mal rein und schaut Euch das bitte mal an.</p> </blockquote> <p>Ich glaub ich hab dir das schon beim letzten mal versucht zu erklären.</p> <p>Du musst aufpassen bei AJAX, dass du einen Request nicht überschreibst bzw. neu anstößt, wenn der alte noch nicht abgearbeitet wurde. Es sei denn du brichst ihn ganz offiziell ab.</p> <p>Wenn du dieses Problem beseitigst, brauchst du auch nicht mehrere Requestobjekte, sondern kannst immer mit dem selben arbeiten.</p> <p>Struppi.</p> Ajax Laufzeitproblem Mon, 02 Nov 09 10:34:01 Z https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404638#m1404638 https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404638#m1404638 <p>hi,</p> <blockquote> <p>Du musst aufpassen bei AJAX, dass du einen Request nicht überschreibst bzw. neu anstößt, wenn der alte noch nicht abgearbeitet wurde. Es sei denn du brichst ihn ganz offiziell ab.</p> </blockquote> <p>Ja, Klar. Habe verstanden.</p> <blockquote> <p>Wenn du dieses Problem beseitigst, brauchst du auch nicht mehrere Requestobjekte, sondern kannst immer mit dem selben arbeiten.</p> </blockquote> <p>Wie machst Du das?</p> <p>Horst</p> Ajax Laufzeitproblem Mon, 02 Nov 09 10:39:06 Z https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404639#m1404639 https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404639#m1404639 <blockquote> <blockquote> <p>Wenn du dieses Problem beseitigst, brauchst du auch nicht mehrere Requestobjekte, sondern kannst immer mit dem selben arbeiten.</p> </blockquote> <p>Wie machst Du das?</p> </blockquote> <p>Was? Mit dem selben Objekt arbeiten? Oder das Problem beseitigen?</p> <p>Struppi.</p> Ajax Laufzeitproblem Mon, 02 Nov 09 11:13:46 Z https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404640#m1404640 https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404640#m1404640 <blockquote> <blockquote> <p>Wie machst Du das?</p> </blockquote> <p>Was? Mit dem selben Objekt arbeiten? Oder das Problem beseitigen?</p> </blockquote> <p>Genau das ;-)</p> <p>Vermutlich fragst Du xhr.readyState ab. Das guck ich mir gleich mal an. Hoffentlich finde ich das, hab nämlich kein Geld um dicke Bücher zu kaufen wo das vielleicht drinstehen könnte. Aber evntl. hilfst Du mir nochmal.</p> <p>Viele Grüße,<br> Horst Teichhofer</p> Ajax Laufzeitproblem Mon, 02 Nov 09 11:51:23 Z https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404641#m1404641 https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404641#m1404641 <blockquote> <blockquote> <blockquote> <p>Wie machst Du das?</p> </blockquote> <p>Was? Mit dem selben Objekt arbeiten? Oder das Problem beseitigen?</p> </blockquote> <p>Genau das ;-)</p> <p>Vermutlich fragst Du xhr.readyState ab.</p> </blockquote> <p>Nein, du musst - wenn du nicht Objektorientiert arbeitest - einen Flag benutzen, der den aktuellen Status des httpRequest Objektes anzeigt. Und je nach Status, darfst du dann keinen neuen Request absetzen.</p> <p>Struppi.</p> Ajax Laufzeitproblem Mon, 02 Nov 09 16:41:01 Z https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404642#m1404642 https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404642#m1404642 <p>hi,</p> <blockquote> <p>Nein, du musst - wenn du nicht Objektorientiert arbeitest - einen Flag benutzen, der den aktuellen Status des httpRequest Objektes anzeigt. Und je nach Status, darfst du dann keinen neuen Request absetzen.</p> </blockquote> <p>Auch schon getestet und prompt einen deadlock eingehandelt ;-)</p> <p>Danke Dir,<br> im Moment läuft das Teil,</p> <p>Horst Schlumpi</p> Ajax Chat noch ne Frage Sat, 31 Oct 09 16:26:04 Z https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404646#m1404646 https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404646#m1404646 <blockquote> <p>Die RaceCondition hab ich beseitigt, danke schonmal. Die RC gibts nur noch, wenn zu oft kurz hintereinander Enter gedrückt wird, das werde ich serverseitig lösen (irgendwann).</p> </blockquote> <p>Den Code hast du jetzt aber doppelt dort stehen und das Problem ist immer noch vorhanden, nämlich wenn man einen 2. Request startet während noch ein vorheriger läuft.<br> Findest du nicht, dass es einfacher gewesen wäre, das XHR-Objekt lokal zu legen?</p> <pre><code class="block language-javascript"><span class="token keyword">function</span> <span class="token function">talkoutRequest</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">var</span> xmaob <span class="token operator">=</span> <span class="token function">mob</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">var</span> url <span class="token operator">=</span> <span class="token string">"/cgi-bin/talk.cgi?talkout=1"</span><span class="token punctuation">;</span> <span class="token keyword">function</span> <span class="token function">talkout</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">if</span><span class="token punctuation">(</span>xmaob<span class="token punctuation">.</span>readyState <span class="token operator">==</span> <span class="token number">4</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">if</span><span class="token punctuation">(</span>xmaob<span class="token punctuation">.</span>status <span class="token operator">==</span> <span class="token number">200</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token keyword">var</span> meta <span class="token operator">=</span> xmaob<span class="token punctuation">.</span>responseXML<span class="token punctuation">.</span><span class="token function">getElementsByTagName</span><span class="token punctuation">(</span><span class="token string">'meta'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">showTalk</span><span class="token punctuation">(</span>meta<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span><span class="token punctuation">{</span> <span class="token function">alert</span><span class="token punctuation">(</span><span class="token string">'Problem mit ajax beim Abholen der Daten'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> xmaob<span class="token punctuation">.</span><span class="token function">open</span><span class="token punctuation">(</span><span class="token string">"GET"</span><span class="token punctuation">,</span> url<span class="token punctuation">,</span> <span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span> xmaob<span class="token punctuation">.</span>onreadystatechange <span class="token operator">=</span> talkout<span class="token punctuation">;</span> xmaob<span class="token punctuation">.</span><span class="token function">send</span><span class="token punctuation">(</span><span class="token keyword">null</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <p>Im anderen Request genauso vorgehen.</p> Ajax Chat UTF-8 Problem Sun, 01 Nov 09 14:43:36 Z https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404644#m1404644 https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404644#m1404644 <p>Moin,</p> <blockquote> <blockquote> <p>s. Thema. Das Teil ist testweise online als</p> <p><a href="http://rolfrost.de/cgi-bin/talk.cgi" rel="nofollow noopener noreferrer">Talk</a></p> </blockquote> </blockquote> <p>Hmm,</p> <p>Wenn ich charset auf UTF-8 umstelle, will der IE nicht mehr posten.</p> <p>Was kann das schon wieder sein? In der Zeile die IE bemängelt steht</p> <p><input type="button" ....> Eingabeformular. Fehler Objekt erwartet.</p> <p>Dankbar für Hinseise,<br> Rolf</p> Ajax Chat UTF-8 Problem glöst Tue, 03 Nov 09 19:25:52 Z https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404645#m1404645 https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404645#m1404645 <p>Moin,</p> <p>saudummer Fehler, der gar keiner war. Es war eine Kommentarzeile im Scriptbereich in der ein 'ü' geschrieben stand. Schwer zu finden, wenn alle Browser tun und nur der IE nicht mit einer absolut nichtssagenden Meldung "Objekt erwartet".</p> <p><a href="http://rolfrost.de/cgi-bin/talk.cgi" rel="nofollow noopener noreferrer">Talk with me in UTF-8</a></p> <p>Hab zwei Tage gebraucht um das rauszufinden ;-)</p> <p>Viele Grüße,<br> Horst Schlemmerschnitte</p> Ajax Chat noch ne Frage Sat, 31 Oct 09 17:26:15 Z https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404647#m1404647 https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404647#m1404647 <blockquote> <blockquote> <p>Die RaceCondition hab ich beseitigt, danke schonmal. Die RC gibts nur noch, wenn zu oft kurz hintereinander Enter gedrückt wird, das werde ich serverseitig lösen (irgendwann).<br> Den Code hast du jetzt aber doppelt dort stehen und das Problem ist immer noch vorhanden, nämlich wenn man einen 2. Request startet während noch ein vorheriger läuft.<br> Findest du nicht, dass es einfacher gewesen wäre, das XHR-Objekt lokal zu legen?</p> </blockquote> </blockquote> <p>Ja, danke, das teste ich gerade, geht ja prima!!!<br> Ähm, wenn das XHR-Objekt jedesmal neu erstellt wird, läuft da irgendwann was über?? (Puffer, Mülleimer, RAM...)</p> <p>Btw., hab das Senden nun auch auf POST umgestellt. Muss ja nicht jeder im Log mitlesen können ;-)</p> <p>Horst</p> Ajax Chat noch ne Frage Sat, 31 Oct 09 17:48:24 Z https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404648#m1404648 https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404648#m1404648 <blockquote> <p>Ähm, wenn das XHR-Objekt jedesmal neu erstellt wird, läuft da irgendwann was über?? (Puffer, Mülleimer, RAM...)</p> </blockquote> <p>Also ich würde erst mal nicht davon ausgehen. Wenn du es genau wissen willst, beobachte einfach mal den Speicher über eine gewisse Zeit. (im IE würde ich anfangen)</p> Ajax Chat noch ne Frage Sat, 31 Oct 09 19:20:30 Z https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404649#m1404649 https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404649#m1404649 <blockquote> <blockquote> <p>Ähm, wenn das XHR-Objekt jedesmal neu erstellt wird, läuft da irgendwann was über?? (Puffer, Mülleimer, RAM...)<br> Also ich würde erst mal nicht davon ausgehen. Wenn du es genau wissen willst, beobachte einfach mal den Speicher über eine gewisse Zeit. (im IE würde ich anfangen)</p> </blockquote> </blockquote> <p>Ok, danke!</p> <p>Nun aber was ganz komisches, wenn ich auf POST umstelle funktioniert das Script mit Mozilla auf dem onlineServer nicht, lokal jedoch schon. auf beiden Servern gehts mit IE und Post.</p> <p>Mit Mozilla gehts auf beiden Servern nur mit GET.</p> <p>GET also</p> <pre><code class="block language-javascript"> <span class="token keyword">var</span> url <span class="token operator">=</span> <span class="token string">"/cgi-bin/talk.cgi?talk=1;msg="</span> <span class="token operator">+</span> msg<span class="token punctuation">;</span> maob<span class="token punctuation">.</span><span class="token function">open</span><span class="token punctuation">(</span><span class="token string">"GET"</span><span class="token punctuation">,</span> url<span class="token punctuation">,</span> <span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span> maob<span class="token punctuation">.</span><span class="token function">send</span><span class="token punctuation">(</span><span class="token keyword">null</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <p>POST</p> <pre><code class="block language-javascript"> <span class="token keyword">var</span> url <span class="token operator">=</span> <span class="token string">"/cgi-bin/talk.cgi"</span><span class="token punctuation">;</span> maob<span class="token punctuation">.</span><span class="token function">open</span><span class="token punctuation">(</span><span class="token string">"POST"</span><span class="token punctuation">,</span> url<span class="token punctuation">,</span> <span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span> maob<span class="token punctuation">.</span><span class="token function">send</span><span class="token punctuation">(</span><span class="token string">"talk=1;msg="</span> <span class="token operator">+</span> msg<span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <p>Hier bin ich echt ratlos. Ideen??</p> <p>Hotte</p> <div class="signature">-- <br> Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein. </div> Ajax Chat noch ne Frage Sat, 31 Oct 09 19:26:02 Z https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404650#m1404650 https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404650#m1404650 <p>xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");</p> Ajax Chat noch ne Frage Sat, 31 Oct 09 19:37:05 Z https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404651#m1404651 https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404651#m1404651 <blockquote> <p>xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");</p> </blockquote> <p>Habsch mir doch gedacht, dass ich da auch noch was fummeln muss.</p> <p>Herzlichen Dank!!</p> <p>Ungeprüft, das wars bestimmt ;-)</p> <p>Cigar!</p> <p>Hotte</p> <div class="signature">-- <br> Den Chat hab ich für meine Frau geschrieben. </div> Ajax Laufzeitproblem Fri, 30 Oct 09 20:52:22 Z https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404653#m1404653 https://forum.selfhtml.org/self/2009/oct/30/ajax-laufzeitproblem/1404653#m1404653 <blockquote> <blockquote> <p>Ideen?<br> das XHR-Objekt Funktionslokal machen, sonst überschreibst du dir das Objekt mit den neuen Daten bei  mehreren Requests gleichzeitig.</p> </blockquote> </blockquote> <p>Uih, das muss ich mal überschlafen ;-)<br> Danke!!!</p> <p>Horst</p> <div class="signature">-- <br> Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein. </div>