Problem mit Ajax-Anfrage – SELFHTML-Forum Forum als Ergänzung zum SELFHTML-Wiki und zur Dokumentation SELFHTML https://forum.selfhtml.org/self Problem mit Ajax-Anfrage Sun, 05 Oct 14 10:03:30 Z https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622592#m1622592 https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622592#m1622592 <p>Hallo,</p> <p>ich habe Probleme mit dem Auslesen einer Ajax-Anfrage, die ich wie folgt aufrufe:</p> <pre><code class="block language-javascript"> xmlhttp <span class="token operator">=</span> <span class="token function">createXMLHTTPObject</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>xmlhttp <span class="token operator">!=</span> <span class="token boolean">false</span><span class="token punctuation">)</span> <span class="token function">sendRequest2</span> <span class="token punctuation">(</span>xmlhttp<span class="token punctuation">,</span> <span class="token string">"Newsletter.php?Anmeldedaten="</span> <span class="token operator">+</span> Anmeldedaten<span class="token punctuation">,</span> handleRequest2<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">else</span> <span class="token function">alert</span><span class="token punctuation">(</span><span class="token string">"Fehler beim Einrichten des xmlhttp-Objekts"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <p>Die Variable "Anmeldedaten" hat hier einen Wert, das habe ich vorher mit einem alert-Befehl geprüft.</p> <p>Die zugehörigen Funktionen sehen folgermaßen aus:</p> <pre><code class="block language-javascript"> <span class="token keyword">function</span> <span class="token function">createXMLHTTPObject</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">var</span> a <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token keyword">return</span> <span class="token keyword">new</span> <span class="token class-name">ActiveXObject</span><span class="token punctuation">(</span><span class="token string">"Msxml2.XMLHTTP.6.0"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token keyword">return</span> <span class="token keyword">new</span> <span class="token class-name">ActiveXObject</span><span class="token punctuation">(</span><span class="token string">"Msxml2.XMLHTTP.5.0"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token keyword">return</span> <span class="token keyword">new</span> <span class="token class-name">ActiveXObject</span><span class="token punctuation">(</span><span class="token string">"Msxml2.XMLHTTP.4.0"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token keyword">return</span> <span class="token keyword">new</span> <span class="token class-name">ActiveXObject</span><span class="token punctuation">(</span><span class="token string">"Msxml2.XMLHTTP.3.0"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token keyword">return</span> <span class="token keyword">new</span> <span class="token class-name">ActiveXObject</span><span class="token punctuation">(</span><span class="token string">"Msxml2.XMLHTTP"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token keyword">return</span> <span class="token keyword">new</span> <span class="token class-name">ActiveXObject</span><span class="token punctuation">(</span><span class="token string">"Microsoft.XMLHTTP"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token keyword">return</span> <span class="token keyword">new</span> <span class="token class-name">XMLHttpRequest</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> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token keyword">return</span> <span class="token boolean">false</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token punctuation">]</span><span class="token punctuation">,</span> b <span class="token operator">=</span> a<span class="token punctuation">.</span>length<span class="token punctuation">,</span> c <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span> d<span class="token punctuation">;</span> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token punctuation">;</span> c <span class="token operator"><</span> b<span class="token punctuation">;</span> c<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">try</span> <span class="token punctuation">{</span> d <span class="token operator">=</span> a<span class="token punctuation">[</span>c<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> <span class="token keyword">catch</span> <span class="token punctuation">(</span>e<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">continue</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">break</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">return</span> d<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">function</span> <span class="token function">sendRequest2</span> <span class="token punctuation">(</span><span class="token parameter">a<span class="token punctuation">,</span> b<span class="token punctuation">,</span> c</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> a<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> b<span class="token punctuation">,</span> <span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span> a<span class="token punctuation">.</span><span class="token function-variable function">onreadystatechange</span> <span class="token operator">=</span> <span class="token keyword">function</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>a<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>a<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 function">c</span><span class="token punctuation">(</span>a<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">else</span> <span class="token function">alert</span><span class="token punctuation">(</span><span class="token string">'In der Funktion "sendRequest2" ist der Fehler '</span> <span class="token operator">+</span> a<span class="token punctuation">.</span>status <span class="token operator">+</span> <span class="token string">" aufgetreten"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> a<span class="token punctuation">.</span><span class="token function">send</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">function</span> <span class="token function">handleRequest2</span> <span class="token punctuation">(</span><span class="token parameter">a</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">var</span> b <span class="token operator">=</span> a<span class="token punctuation">.</span>responseText<span class="token punctuation">;</span> <span class="token function">alert</span><span class="token punctuation">(</span><span class="token string">"handleRequest2: "</span> <span class="token operator">+</span> b<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <p>Die Newsletter.php hat derzeit folgenden minimalen Aufbau:</p> <pre><code class="block language-php"> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token keyword">isset</span> <span class="token punctuation">(</span><span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string double-quoted-string">"Anmeldedaten"</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$Anmeldedaten</span> <span class="token operator">=</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string double-quoted-string">"Anmeldedaten"</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">return</span> <span class="token string double-quoted-string">"OK"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">return</span> <span class="token string double-quoted-string">"Fehler"</span><span class="token punctuation">;</span> </code></pre> <p>Leider wird mir in der Funktion "handleRequest2" immer nur "handleRequest2:" angezeigt, d.h. ich bekomme hier keinen Rückgabewert.</p> <p>Woran liegt das?<br> Was habe ich falsch gemacht?</p> <p>Vielen Dank für eure Mithilfe!</p> <p>Gruß,<br> Enrico</p> Problem mit Ajax-Anfrage Sun, 05 Oct 14 10:29:43 Z https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622612#m1622612 https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622612#m1622612 <p>Lieber Enrico,</p> <blockquote> <pre><code class="block language-javascript"></code></pre> </blockquote> <p>function handleRequest2 (a)</p> <blockquote> <p>{<br>    var b = a.responseText;</p> <p>alert("handleRequest2: " + b);<br> }</p> </blockquote> <pre><code class="block"> > [...] > Leider wird mir in der Funktion "handleRequest2" immer nur "handleRequest2:" angezeigt, d.h. ich bekomme hier keinen Rückgabewert. was sagt denn die Fehlerkonsole Deines Browsers dazu? Findet sie etwa, dass a kein XmlHttpRequestObjekt ist? Liebe Grüße, Felix Riesterer. -- "Wäre die EU ein Staat, der die Aufnahme in die EU beantragen würde, müsste der Antrag zurückgewiesen werden - aus Mangel an demokratischer Substanz." (Martin Schulz, Präsident des EU-Parlamentes) </code></pre> Problem mit Ajax-Anfrage Sun, 05 Oct 14 10:31:56 Z https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622610#m1622610 https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622610#m1622610 <p>Meine Herren!</p> <blockquote> <pre><code class="block language-javascript"></code></pre> </blockquote> <blockquote> <p>function handleRequest2 (a)<br> {<br>    var b = a.responseText;</p> <p>alert("handleRequest2: " + b);<br> }</p> </blockquote> <pre><code class="block"> Die Callback-Funktion handleRequest2 wird mit einem AJAX-Event als Parameter aufgerufen. Den Parameter hast du in deiner Funktion mit „a“ benannt. Dann versuchst du die Eigenschaft responseText von diesem Event zu lesen. Diese Eigenschaft gibt es aber für das Event gar nicht. Das ist eine Eigenschaft deiner XMLHttpRequest-Insanz, also in deinem Beispiel von „xmlhttp“. Innerhalb deiner Callback-Funktion kannst du die mit dem Event assoziierte XMLHttpRequest-Instanz über die target-Eigenschaft des Events holen. In Quellcode formuliert: `var b = a.target.reponseText;`{:.language-javascript} -- “All right, then, I'll go to hell.” – Huck Finn </code></pre> Problem mit Ajax-Anfrage Sun, 05 Oct 14 10:45:41 Z https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622605#m1622605 https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622605#m1622605 <blockquote> <p>ich habe Probleme mit dem Auslesen einer Ajax-Anfrage, die ich wie folgt aufrufe:</p> </blockquote> <blockquote> <p>Die Variable "Anmeldedaten" hat hier einen Wert, das habe ich vorher mit einem alert-Befehl geprüft.</p> </blockquote> <p>Oh, du benutzt alert()? Dein Browser hat in der Abteilung Entwicklerkrams eine Fehlerkonsole (bzw. sollte er unbedingt haben, wenn du mit HTML, CSS und Javascript arbeitest).</p> <blockquote> <p>function handleRequest2 (a)<br> {<br>    var b = a.responseText;</p> <p>alert("handleRequest2: " + b);<br> }</p> </blockquote> <blockquote> <p>Leider wird mir in der Funktion "handleRequest2" immer nur "handleRequest2:" angezeigt, d.h. ich bekomme hier keinen Rückgabewert.</p> </blockquote> <p>Informiere dich mal über die Funktion <a href="https://developer.mozilla.org/en-US/docs/Web/API/console.log" rel="nofollow noopener noreferrer">console.log()</a> und verwende sie in handleRequest2() mit deinem Parameter a.</p> <p>Eigentlich müsste die Konsole dich, würdest du denn mal reinschauen, aber auch schon ohne console.log(a) auf das Problem aufmerksam gemacht haben.</p> Kann es sein, dass... Sun, 05 Oct 14 13:47:11 Z https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622596#m1622596 https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622596#m1622596 <p>...ich bei mehreren Ajax-Anfragen an unterschiedlichen Stellen in meinem Javascript das xmlhttp-Objekt immer wieder neu initialisieren muss?</p> <p>Könnte es daran liegen?</p> <p>Ich habe die komplette URL aus der Windows-Konsole rauskopiert, in die Adresszeile meines Browsers eingefügt und die Newsletter.php direkt aufgerufen, nachdem ich die return-Anweisungen in echo-Befehle geändert habe und dann wurde mir der Inhalt der Variable "Anmeldedaten" korrekt angezeigt.</p> <p>Ich dreh noch durch...</p> <p>Gruß,<br> Enrico</p> leicht OT: Problem mit Ajax-Anfrage Mon, 06 Oct 14 07:59:20 Z https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622595#m1622595 https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622595#m1622595 <p>Ich würde schauen ob man das noch abkürzen kann. Angenommen du musst wirklich jedes mal alle Objekte durchprobieren bis eins funtioniert, das kostet Zeit. Ob die spürbar ist oder nicht ist vielleicht wieder eine andere Frage, aber sauber ist das mit den vielen Exceptions sicher nicht.<br> Man könnte sich beim ersten Versuch merken welches der Objekte funktioniert und dann immer gleich diese eine Objektart erzeugen.</p> Problem mit Ajax-Anfrage Mon, 06 Oct 14 10:36:34 Z https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622593#m1622593 https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622593#m1622593 <p>Ich habe noch mal was zusammengehackt. Dein Code sah etwas sehr unübersichtlich aus, das halbe Dutzend Abfragen, wo denn das XMLHttpRequest herkommen möge, "aussagekräftige" Funktionsargumente à la a, b und c, zwei Funktionen, wo eine reichen täte.<br> Davon unabhängig solltest du Daten, so es keinen ausdrücklich Grund für GET gibt, immer per POST senden. Das Senden von Daten in der URL (also per GET) hat gravierende Nachteile, die URL ist in Art und Umfang beschränkt, vor allem aber landet eine URL immer in diesem oder jenem Protokoll - das ist mit der letzte Ort, an dem du verantwortungsvollerweise ein Passwort sehen möchtest.</p> <p>Im nachfolgenden Skript hast du für die Serveranfrage genau eine Funktion, die du aufrufen musst. Sie erzeugt für jede Anfrage ein eigenständiges XMLHttpRequest-Objekt und bekommt neben der URL ein Objekt, in dem die zu sendenen Daten stehen, und je eine Funktionen, die bei Erfolg bzw. Fehlschlag aufgerufen wird.</p> <pre><code class="block language-javascript"><span class="token keyword">function</span> <span class="token constant">POST</span><span class="token punctuation">(</span><span class="token parameter">url<span class="token punctuation">,</span> daten<span class="token punctuation">,</span> erfolg<span class="token punctuation">,</span> fehler</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">var</span> r<span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>window<span class="token punctuation">.</span>XMLHttpRequest<span class="token punctuation">)</span> <span class="token punctuation">{</span> r <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">XMLHttpRequest</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>window<span class="token punctuation">.</span>ActiveXObject<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// IE <= 8 </span> r <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">ActiveXObject</span><span class="token punctuation">(</span><span class="token string">"Microsoft.XMLHTTP"</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><span class="token operator">!</span>r<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token boolean">false</span><span class="token punctuation">;</span> <span class="token comment">// irgendeinen Fehler melden </span> <span class="token punctuation">}</span> r<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> r<span class="token punctuation">.</span><span class="token function">setRequestHeader</span><span class="token punctuation">(</span><span class="token string">"Content-Type"</span><span class="token punctuation">,</span> <span class="token string">"application/x-www-form-urlencoded"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> r<span class="token punctuation">.</span><span class="token function-variable function">onreadystatechange</span> <span class="token operator">=</span> <span class="token keyword">function</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>r<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>r<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 function">erfolg</span><span class="token punctuation">(</span>r<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">fehler</span><span class="token punctuation">(</span>r<span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">var</span> p <span class="token operator">=</span> <span class="token string">""</span><span class="token punctuation">;</span> <span class="token keyword">for</span> <span class="token punctuation">(</span>k <span class="token keyword">in</span> daten<span class="token punctuation">)</span> <span class="token punctuation">{</span> p <span class="token operator">+=</span> <span class="token string">"&"</span> <span class="token operator">+</span> <span class="token function">encodeURIComponent</span><span class="token punctuation">(</span>k<span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">"="</span> <span class="token operator">+</span> <span class="token function">encodeURIComponent</span><span class="token punctuation">(</span>daten<span class="token punctuation">[</span>k<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> r<span class="token punctuation">.</span><span class="token function">send</span><span class="token punctuation">(</span>p<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">function</span> <span class="token function">geht</span><span class="token punctuation">(</span><span class="token parameter">r</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">"Erfolg."</span><span class="token punctuation">,</span> r<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">function</span> <span class="token function">steht</span><span class="token punctuation">(</span><span class="token parameter">r</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">"Ging daneben."</span><span class="token punctuation">,</span> r<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment">// Aufrufen: </span> <span class="token constant">POST</span><span class="token punctuation">(</span><span class="token string">"irgendwohin.php"</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">benutzer</span><span class="token operator">:</span> <span class="token string">"Hans"</span><span class="token punctuation">,</span> <span class="token literal-property property">passwort</span><span class="token operator">:</span> <span class="token string">"Franz"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> geht<span class="token punctuation">,</span> steht<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// oder so </span> <span class="token keyword">var</span> nutzer <span class="token operator">=</span> <span class="token punctuation">{</span> <span class="token literal-property property">benutzer</span><span class="token operator">:</span> <span class="token string">"Hans"</span><span class="token punctuation">,</span> <span class="token literal-property property">passwort</span><span class="token operator">:</span> <span class="token string">"Franz"</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> <span class="token constant">POST</span><span class="token punctuation">(</span><span class="token string">"irgendwohin.php"</span><span class="token punctuation">,</span> nutzer<span class="token punctuation">,</span> geht<span class="token punctuation">,</span> steht<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// oder so </span> <span class="token keyword">var</span> nutzer <span class="token operator">=</span> <span class="token punctuation">{</span> <span class="token literal-property property">benutzer</span><span class="token operator">:</span> <span class="token string">"Hans"</span><span class="token punctuation">,</span> <span class="token literal-property property">passwort</span><span class="token operator">:</span> <span class="token string">"Franz"</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> <span class="token constant">POST</span><span class="token punctuation">(</span><span class="token string">"irgendwohin.php"</span><span class="token punctuation">,</span> nutzer<span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">r</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">"Toll:"</span><span class="token punctuation">,</span> r<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">benutzeristangemeldet</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">seitetun</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> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">r</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">"Bockmist."</span><span class="token punctuation">,</span> r<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><span class="token punctuation">;</span> </code></pre> <p>Die Daten empfängst du PHP-seitig in $_POST.</p> <p>Das Ganze ist sicher noch verbesserungs- und ausbaufähig, sollte aber als Grundlage ausreichen.</p> Problem mit Ajax-Anfrage Tue, 07 Oct 14 17:29:32 Z https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622594#m1622594 https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622594#m1622594 <p>Hallo Hannes,</p> <p>vielen, vielen lieben Dank für Deine Hilfe und auch für Deine Geduld, dies gilt natürlich auch für Encoder, Felix und 1UnitedPower.</p> <p>Ich habe nun ein ähnliches "Framework" gefunden, das wunderbar funktioniert und Deinem ähnlich ist:</p> <pre><code class="block language-javascript"> <span class="token keyword">var</span> Ajax <span class="token operator">=</span> <span class="token punctuation">{</span> <span class="token function-variable function">request</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">ops</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token keyword">typeof</span> ops <span class="token operator">==</span> <span class="token string">'string'</span><span class="token punctuation">)</span> ops <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token literal-property property">url</span><span class="token operator">:</span> ops<span class="token punctuation">}</span><span class="token punctuation">;</span> ops<span class="token punctuation">.</span>url <span class="token operator">=</span> ops<span class="token punctuation">.</span>url <span class="token operator">||</span> <span class="token string">''</span><span class="token punctuation">;</span> ops<span class="token punctuation">.</span>method <span class="token operator">=</span> ops<span class="token punctuation">.</span>method <span class="token operator">||</span> <span class="token string">'get'</span> ops<span class="token punctuation">.</span>data <span class="token operator">=</span> ops<span class="token punctuation">.</span>data <span class="token operator">||</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">;</span> <span class="token keyword">var</span> <span class="token function-variable function">getParams</span> <span class="token operator">=</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">data<span class="token punctuation">,</span> url</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">var</span> arr <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">,</span> str<span class="token punctuation">;</span> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">var</span> name <span class="token keyword">in</span> data<span class="token punctuation">)</span> arr<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span>name <span class="token operator">+</span> <span class="token string">'='</span> <span class="token operator">+</span> <span class="token function">encodeURIComponent</span><span class="token punctuation">(</span>data<span class="token punctuation">[</span>name<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> str <span class="token operator">=</span> arr<span class="token punctuation">.</span><span class="token function">join</span> <span class="token punctuation">(</span><span class="token string">'&'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>str <span class="token operator">!=</span> <span class="token string">''</span><span class="token punctuation">)</span> <span class="token keyword">return</span> url <span class="token operator">?</span> <span class="token punctuation">(</span>url<span class="token punctuation">.</span><span class="token function">indexOf</span><span class="token punctuation">(</span><span class="token string">'?'</span><span class="token punctuation">)</span> <span class="token operator"><</span> <span class="token number">0</span> <span class="token operator">?</span> <span class="token string">'?'</span> <span class="token operator">+</span> str <span class="token operator">:</span> <span class="token string">'&'</span> <span class="token operator">+</span> str<span class="token punctuation">)</span> <span class="token operator">:</span> str<span class="token punctuation">;</span> <span class="token keyword">return</span> <span class="token string">''</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">var</span> api <span class="token operator">=</span> <span class="token punctuation">{</span> host<span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token function-variable function">process</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">ops</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">var</span> self <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">;</span> <span class="token keyword">this</span><span class="token punctuation">.</span>xhr <span class="token operator">=</span> <span class="token keyword">null</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>window<span class="token punctuation">.</span>ActiveXObject<span class="token punctuation">)</span> <span class="token keyword">this</span><span class="token punctuation">.</span>xhr <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">ActiveXObject</span><span class="token punctuation">(</span><span class="token string">'Microsoft.XMLHTTP'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>window<span class="token punctuation">.</span>XMLHttpRequest<span class="token punctuation">)</span> <span class="token keyword">this</span><span class="token punctuation">.</span>xhr <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">XMLHttpRequest</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><span class="token keyword">this</span><span class="token punctuation">.</span>xhr<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">this</span><span class="token punctuation">.</span>xhr<span class="token punctuation">.</span><span class="token function-variable function">onreadystatechange</span> <span class="token operator">=</span> <span class="token keyword">function</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>self<span class="token punctuation">.</span>xhr<span class="token punctuation">.</span>readyState <span class="token operator">==</span> <span class="token number">4</span> <span class="token operator">&&</span> self<span class="token punctuation">.</span>xhr<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> result <span class="token operator">=</span> self<span class="token punctuation">.</span>xhr<span class="token punctuation">.</span>responseText<span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>ops<span class="token punctuation">.</span>json <span class="token operator">===</span> <span class="token boolean">true</span> <span class="token operator">&&</span> <span class="token keyword">typeof</span> <span class="token constant">JSON</span> <span class="token operator">!=</span> <span class="token string">'undefined'</span><span class="token punctuation">)</span> result <span class="token operator">=</span> <span class="token constant">JSON</span><span class="token punctuation">.</span><span class="token function">parse</span><span class="token punctuation">(</span>result<span class="token punctuation">)</span><span class="token punctuation">;</span> self<span class="token punctuation">.</span>doneCallback <span class="token operator">&&</span> self<span class="token punctuation">.</span><span class="token function">doneCallback</span><span class="token punctuation">.</span><span class="token function">apply</span><span class="token punctuation">(</span>self<span class="token punctuation">.</span>host<span class="token punctuation">,</span> <span class="token punctuation">[</span>result<span class="token punctuation">,</span> self<span class="token punctuation">.</span>xhr<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>self<span class="token punctuation">.</span>xhr<span class="token punctuation">.</span>readyState <span class="token operator">==</span> <span class="token number">4</span><span class="token punctuation">)</span> self<span class="token punctuation">.</span>failCallback <span class="token operator">&&</span> self<span class="token punctuation">.</span><span class="token function">failCallback</span><span class="token punctuation">.</span><span class="token function">apply</span><span class="token punctuation">(</span>self<span class="token punctuation">.</span>host<span class="token punctuation">,</span> <span class="token punctuation">[</span>self<span class="token punctuation">.</span>xhr<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span> self<span class="token punctuation">.</span>alwaysCallback <span class="token operator">&&</span> self<span class="token punctuation">.</span><span class="token function">alwaysCallback</span><span class="token punctuation">.</span><span class="token function">apply</span><span class="token punctuation">(</span>self<span class="token punctuation">.</span>host<span class="token punctuation">,</span> <span class="token punctuation">[</span>self<span class="token punctuation">.</span>xhr<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> <span class="token keyword">if</span> <span class="token punctuation">(</span>ops<span class="token punctuation">.</span>method <span class="token operator">==</span> <span class="token string">'get'</span><span class="token punctuation">)</span> <span class="token keyword">this</span><span class="token punctuation">.</span>xhr<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> ops<span class="token punctuation">.</span>url <span class="token operator">+</span> <span class="token function">getParams</span><span class="token punctuation">(</span>ops<span class="token punctuation">.</span>data<span class="token punctuation">,</span> ops<span class="token punctuation">.</span>url<span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token boolean">true</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 keyword">this</span><span class="token punctuation">.</span>xhr<span class="token punctuation">.</span><span class="token function">open</span><span class="token punctuation">(</span>ops<span class="token punctuation">.</span>method<span class="token punctuation">,</span> ops<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> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">setHeaders</span><span class="token punctuation">(</span><span class="token punctuation">{</span><span class="token string-property property">'X-Requested-With'</span><span class="token operator">:</span> <span class="token string">'XMLHttpRequest'</span><span class="token punctuation">,</span> <span class="token string-property property">'Content-type'</span><span class="token operator">:</span> <span class="token string">'application/x-www-form-urlencoded'</span><span class="token punctuation">}</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>ops<span class="token punctuation">.</span>headers <span class="token operator">&&</span> <span class="token keyword">typeof</span> ops<span class="token punctuation">.</span>headers <span class="token operator">==</span> <span class="token string">'object'</span><span class="token punctuation">)</span> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">setHeaders</span><span class="token punctuation">(</span>ops<span class="token punctuation">.</span>headers<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">setTimeout</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> ops<span class="token punctuation">.</span>method <span class="token operator">==</span> <span class="token string">'get'</span> <span class="token operator">?</span> self<span class="token punctuation">.</span>xhr<span class="token punctuation">.</span><span class="token function">send</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">:</span> self<span class="token punctuation">.</span>xhr<span class="token punctuation">.</span><span class="token function">send</span><span class="token punctuation">(</span><span class="token function">getParams</span><span class="token punctuation">(</span>ops<span class="token punctuation">.</span>data<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> <span class="token number">20</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">return</span> <span class="token keyword">this</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token function-variable function">done</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">callback</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">this</span><span class="token punctuation">.</span>doneCallback <span class="token operator">=</span> callback<span class="token punctuation">;</span> <span class="token keyword">return</span> <span class="token keyword">this</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token function-variable function">fail</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">callback</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">this</span><span class="token punctuation">.</span>failCallback <span class="token operator">=</span> callback<span class="token punctuation">;</span> <span class="token keyword">return</span> <span class="token keyword">this</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token function-variable function">always</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">callback</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">this</span><span class="token punctuation">.</span>alwaysCallback <span class="token operator">=</span> callback<span class="token punctuation">;</span> <span class="token keyword">return</span> <span class="token keyword">this</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token function-variable function">setHeaders</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">headers</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">var</span> name <span class="token keyword">in</span> headers<span class="token punctuation">)</span> <span class="token keyword">this</span><span class="token punctuation">.</span>xhr <span class="token operator">&&</span> <span class="token keyword">this</span><span class="token punctuation">.</span>xhr<span class="token punctuation">.</span><span class="token function">setRequestHeader</span><span class="token punctuation">(</span>name<span class="token punctuation">,</span> headers<span class="token punctuation">[</span>name<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> <span class="token keyword">return</span> api<span class="token punctuation">.</span><span class="token function">process</span><span class="token punctuation">(</span>ops<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> </code></pre> <p>Ich bin mir mittlerweile sicher, dass mein Problem nicht mit der Initierung und Verarbeitung des XHR-Objekts (ich hoffe, ich bringe jetzt keine Fachbegriffe durcheinander) ansich, sondern vielmehr damit zusammenhing, dass Firefox und vielleicht auch IE oder/und Opera Probleme mit hintereinander folgenden Ajax-Abfragen haben, auch wenn diese nicht parallel ablaufen.</p> <p>Dass ich "POST" anstelle von "GET" verwenden sollte, klingt aufgrund Deinen genannten Gründen plausibel. Ich werde den gefundenen Code dahingehend noch anpassen und auch verkleiner, so dass automatisch "POST" verwendet wird und ich nicht benötigte Methoden raus werfe.</p> <p>Wenn Ajax funktioniert, dann ist es eine tolle Sache. Wenn nicht, dann gestaltet sich die Fehler- bzw. Ursachensuche schwierig, wie ich es am eigenen Leib erleben durfte.</p> <p>Gruß,<br> Enrico</p> Kann es sein, dass... Sun, 05 Oct 14 14:19:56 Z https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622597#m1622597 https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622597#m1622597 <p>Lieber Enrico,</p> <blockquote> <p>...ich bei mehreren Ajax-Anfragen an unterschiedlichen Stellen in meinem Javascript das xmlhttp-Objekt immer wieder neu initialisieren muss?</p> </blockquote> <p>Du wirst verschiedene Instanzen benötigen, ja.</p> <p>Hast Du Fälle, in denen mehrere AJAX-Calls parallel verarbeitet werden sollen, also dass die Antwort des einen noch nicht da ist, während der andere schon die nächste Anfrage sendet?</p> <p>Liebe Grüße,</p> <p>Felix Riesterer.</p> <div class="signature">-- <br> "Wäre die EU ein Staat, der die Aufnahme in die EU beantragen würde, müsste der Antrag zurückgewiesen werden - aus Mangel an demokratischer Substanz." (Martin Schulz, Präsident des EU-Parlamentes) </div> Kann es sein, dass... Sun, 05 Oct 14 14:31:13 Z https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622598#m1622598 https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622598#m1622598 <p>Hallo Felix,</p> <blockquote> <p>Hast Du Fälle, in denen mehrere AJAX-Calls parallel verarbeitet werden sollen</p> </blockquote> <p>Nein, eine Ajax-Anfrage liest eine Textdatei vom Server ein, eine andere ruft zu einem späteren Zeitpunkt die Newsletter.php auf, d.h. die Anfragen laufen nicht parallel.</p> <p>Du meinst also, dass ich bei meiner zweiten Ajax-Anfrage die nachfolgende Funktion noch einmal aufrufen muss?</p> <pre><code class="block language-javascript"> <span class="token keyword">function</span> <span class="token function">createXMLHTTPObject</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">var</span> a <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token keyword">return</span> <span class="token keyword">new</span> <span class="token class-name">ActiveXObject</span><span class="token punctuation">(</span><span class="token string">"Msxml2.XMLHTTP.6.0"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token keyword">return</span> <span class="token keyword">new</span> <span class="token class-name">ActiveXObject</span><span class="token punctuation">(</span><span class="token string">"Msxml2.XMLHTTP.5.0"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token keyword">return</span> <span class="token keyword">new</span> <span class="token class-name">ActiveXObject</span><span class="token punctuation">(</span><span class="token string">"Msxml2.XMLHTTP.4.0"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token keyword">return</span> <span class="token keyword">new</span> <span class="token class-name">ActiveXObject</span><span class="token punctuation">(</span><span class="token string">"Msxml2.XMLHTTP.3.0"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token keyword">return</span> <span class="token keyword">new</span> <span class="token class-name">ActiveXObject</span><span class="token punctuation">(</span><span class="token string">"Msxml2.XMLHTTP"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token keyword">return</span> <span class="token keyword">new</span> <span class="token class-name">ActiveXObject</span><span class="token punctuation">(</span><span class="token string">"Microsoft.XMLHTTP"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token keyword">return</span> <span class="token keyword">new</span> <span class="token class-name">XMLHttpRequest</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> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token keyword">return</span> <span class="token boolean">false</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token punctuation">]</span><span class="token punctuation">,</span> b <span class="token operator">=</span> a<span class="token punctuation">.</span>length<span class="token punctuation">,</span> c <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span> d<span class="token punctuation">;</span> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token punctuation">;</span> c <span class="token operator"><</span> b<span class="token punctuation">;</span> c<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">try</span> <span class="token punctuation">{</span> d <span class="token operator">=</span> a<span class="token punctuation">[</span>c<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> <span class="token keyword">catch</span> <span class="token punctuation">(</span>e<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">continue</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">break</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">return</span> d<span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <p>Gruß,<br> Enrico</p> Kann es sein, dass... Sun, 05 Oct 14 16:24:02 Z https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622599#m1622599 https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622599#m1622599 <p>Lieber Enrico,</p> <p>meiner Erfahrung nach ist es keine gute Idee XmlHttpRequest-Objekte zu recyclen. Jeder Request wird sinnvollerweise mit einem frisch zubreiteten XHR-Objekt abgesandt.</p> <p>Liebe Grüße,</p> <p>Felix Riesterer.</p> <div class="signature">-- <br> "Wäre die EU ein Staat, der die Aufnahme in die EU beantragen würde, müsste der Antrag zurückgewiesen werden - aus Mangel an demokratischer Substanz." (Martin Schulz, Präsident des EU-Parlamentes) </div> Kann es sein, dass... Sun, 05 Oct 14 19:16:50 Z https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622600#m1622600 https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622600#m1622600 <p>Hallo Felix,</p> <blockquote> <p>Jeder Request wird sinnvollerweise mit einem frisch zubreiteten XHR-Objekt abgesandt.</p> </blockquote> <p>Wo kann ich nachlesen, wie ich das XHR-Objekt frisch aufbereite?</p> <p>Ich steh grad, entschuldige, bitte voll im Wald... ^^</p> <p>Gruß,<br> Enrico</p> Kann es sein, dass... Sun, 05 Oct 14 19:33:12 Z https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622601#m1622601 https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622601#m1622601 <p>Hallo Felix,</p> <blockquote> <p>Wo kann ich nachlesen, wie ich das XHR-Objekt frisch aufbereite?</p> </blockquote> <pre><code class="block language-javascript"> Mein neuer Request sieht folgendermaßen aus<span class="token operator">:</span> xmlhttp2 <span class="token operator">=</span> <span class="token function">createXMLHTTPObject</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>xmlhttp2 <span class="token operator">!=</span> <span class="token boolean">false</span><span class="token punctuation">)</span> <span class="token function">sendRequest2</span> <span class="token punctuation">(</span><span class="token string">"Newsletter.php?Anmeldedaten="</span> <span class="token operator">+</span> Anmeldedaten<span class="token punctuation">,</span> handleRequest2<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">else</span> <span class="token function">alert</span><span class="token punctuation">(</span><span class="token string">"Fehler beim Einrichten des xmlhttp-Objekts"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <p>Absenden und auswerten tue ich die neue Anfrage wie folgt:</p> <pre><code class="block language-javascript"> xmlhttp2<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> b<span class="token punctuation">,</span> <span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span> xmlhttp2<span class="token punctuation">.</span><span class="token function-variable function">onreadystatechange</span> <span class="token operator">=</span> <span class="token keyword">function</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>xmlhttp2<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>xmlhttp2<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 function">alert</span><span class="token punctuation">(</span>xmlhttp2<span class="token punctuation">.</span>reponseText<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// c(a); </span> <span class="token keyword">else</span> <span class="token function">alert</span><span class="token punctuation">(</span><span class="token string">'In der Funktion "sendRequest2" ist der Fehler '</span> <span class="token operator">+</span> a<span class="token punctuation">.</span>status <span class="token operator">+</span> <span class="token string">" aufgetreten"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> xmlhttp2<span class="token punctuation">.</span><span class="token function">send</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>xmlhttp2<span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <p>Gleiches Ergebnis, die PHP-Datei gibt mir einfach nichts zurück oder das Javascript empfängt nichts.</p> <p>Gruß,<br> Enrico</p> Kann es sein, dass... Mon, 06 Oct 14 09:55:26 Z https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622602#m1622602 https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622602#m1622602 <blockquote> <p>Gleiches Ergebnis, die PHP-Datei gibt mir einfach nichts zurück oder das Javascript empfängt nichts.</p> </blockquote> <p>Zum Empfang im Browser noch der Hinweis auf das Netzwerkprotokoll, das dein Browser ebenfalls führen sollte. Firefox hat es im Menü Entwicklerwerkzeuge unter dem Punkt Netzwerkanalyse, Firebug in seiner Anzeige im Reiter Netzwerk.</p> <p>Du bekommst dort die Rohdaten, die der Browser empfängt, also ohne, dass dir da zum Beispiel irgendetwas auch nur annähernd Javascriptiges zwischenfunkt, und kannst so zumindest sicherstellen, dass die Daten, die dein Skript verarbeiten soll, auch zum Skript passen.</p> <p>Dein Problem hat allerdings eine andere Ursache:</p> <blockquote> <pre><code class="block language-php"></code></pre> </blockquote> <blockquote> <p>if (isset ($_GET["Anmeldedaten"]))<br> {<br>    $Anmeldedaten = $_GET["Anmeldedaten"];</p> <p>return "OK";<br> }<br> else<br>    return "Fehler";</p> </blockquote> <pre><code class="block"> Rufe dein PHP-Skript mal \_direkt\_ auf und du wirst sehen, dass es nichts ausspuckt: Ausgaben in PHP werden mit echo gemacht, nicht mit return. Vermutlich hast du die obigen Zeilen zum Probieren aus irgendeiner Funktion herausgeholt und die Anpassung vergessen. Tröste dich, vier andere Leute, mich eingeschlossen, haben das auch nicht bemerkt. </code></pre> Kann es sein, dass... Mon, 06 Oct 14 15:35:58 Z https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622603#m1622603 https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622603#m1622603 <p>Hallo Hannes,</p> <blockquote> <p>Ausgaben in PHP werden mit echo gemacht, nicht mit return<br> Tröste dich, vier andere Leute, mich eingeschlossen, haben das auch nicht bemerkt</p> </blockquote> <p>Da bin ich zu sehr später Stunde auch noch drauf gekommen - ein sehr, sehr ärgerlicher Fehler, weil man den sehr leicht übersieht - aber was sagst Du zu dem Ergebnis, dass ich jetzt zwar einen Response bekomme, dieser aber immer nur als "undefined" ausgegeben wird?</p> <p>XMLHttpRequest<br> {<br>    onreadystatechange: sendRequest/xmlhttp.onreadystatechange(),<br>    readyState: 4,<br>    timeout: 0,<br>    withCredentials: false,<br>    upload: XMLHttpRequestUpload,<br>            responseURL: "http://localhost/_____N_E_U_/Newsletter.php?Anmeldedaten=AAYWiQ...iMAO==",<br>            status: 200,<br>            statusText: "OK",<br>            responseType: "",<br>            response: "OK"<br> }</p> <p>Gruß,<br> Enrico</p> Kann es sein, dass... Tue, 07 Oct 14 09:29:19 Z https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622604#m1622604 https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622604#m1622604 <blockquote> <p>dass ich jetzt zwar einen Response bekomme, dieser aber immer nur als "undefined" ausgegeben wird?</p> <p>XMLHttpRequest<br> {</p> </blockquote> <blockquote> <p>status: 200,<br>    statusText: "OK",<br>    responseType: "",<br>    response: "OK"<br> }</p> </blockquote> <p>Verstehe die Frage jetzt nicht, die Ausgabe sieht doch aus wie erwartet? In welcher Zeile, bei welchem Befehl bekommst du undefined zurück?</p> Problem mit Ajax-Anfrage Sun, 05 Oct 14 11:00:26 Z https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622606#m1622606 https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622606#m1622606 <p>Hallo Hannes,</p> <p>die Konsole liefert mit folgende Werte:</p> <p>XMLHttpRequest<br> {<br>    onreadystatechange: sendRequest2/a.onreadystatechange(),<br>    readyState:         4,<br>    timeout:            0,<br>    withCredentials:    false,<br>    upload:             XMLHttpRequestUpload,<br>    responseURL:        "http://localhost//Newsletter.php?Anmeldedaten=AAteewK...==",<br>                        status:       200,<br>                        statusText:   "OK",<br>                        responseType: "",<br>                        response:     ""<br> }</p> <p>Also ist hier (scheinbar) alles in Ordnung.</p> <p>Gruß,<br> Enrico</p> Problem mit Ajax-Anfrage Sun, 05 Oct 14 11:43:04 Z https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622609#m1622609 https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622609#m1622609 <p>Ich habe jetzt die Newsletter.php um die zu Testzwecken möglichen Situationen und Rückgabewerte ergänzt, aber gleiches Resultat.</p> <pre><code class="block language-php"> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token keyword">isset</span> <span class="token punctuation">(</span><span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string double-quoted-string">"Anmeldedaten"</span><span class="token punctuation">]</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><span class="token operator">!</span><span class="token keyword">empty</span> <span class="token punctuation">(</span><span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string double-quoted-string">"Anmeldedaten"</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$Anmeldedaten</span> <span class="token operator">=</span> <span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string double-quoted-string">"Anmeldedaten"</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">return</span> <span class="token variable">$Anmeldedaten</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">return</span> <span class="token string single-quoted-string">'Das Skript "Newsletter" hat einen leeren Wert übermittelt bekommen'</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">return</span> <span class="token string double-quoted-string">"Anmeldedaten wurden nicht korrekt übermittelt"</span><span class="token punctuation">;</span> </code></pre> <p>Die Newsletter.php wird in der Ajax-Anfrage auf jeden Fall gefunden, d.h. es liegt kein Fehler 404 vor.</p> <p>Ich verstehe das nicht.</p> <p>Die Newsletter.php MUSS etwas zurückliefern und die javascript-Datei somit auch etwas empfangen.</p> <p>Gruß,<br> Enrico</p> Problem mit Ajax-Anfrage Sun, 05 Oct 14 14:25:59 Z https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622607#m1622607 https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622607#m1622607 <p>Lieber Enrico,</p> <blockquote> <p>responseURL:        "http://localhost//Newsletter.php?Anmeldedaten=AAteewK...==",</p> </blockquote> <p>werden da Daten als base64-enkodierter String übertragen? Das Istgleichzeichen ist ein Sonderzeichen im Query-String! Dieses doppelte Istgleichzeichen sollte URL-kodiert sein, sonst kommen am Server im $_GET- oder $_POST-Array nicht die Werte an, die Du gerne hättest.</p> <p>Zum Debuggen gehört natürlich auch, dass Du Dir diese Arrays in eine Textdatei schreiben lässt, um zu "sehen", was da vom Browser tatsächlich ankommt. Probiere es doch einmal damit:</p> <pre><code class="block language-php"><span class="token function">debug</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"in _REQUEST steht: "</span><span class="token punctuation">,</span><span class="token variable">$_REQUEST</span><span class="token punctuation">,</span><span class="token string double-quoted-string">"\r\nin _POST steht: "</span><span class="token punctuation">,</span><span class="token variable">$_POST</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">function</span> <span class="token function-definition function">debug</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$arg_list</span> <span class="token operator">=</span> <span class="token function">func_get_args</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">foreach</span> <span class="token punctuation">(</span><span class="token variable">$arg_list</span> <span class="token keyword">as</span> <span class="token variable">$v</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token function">is_string</span><span class="token punctuation">(</span><span class="token variable">$v</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$v</span> <span class="token operator">=</span> <span class="token function">print_r</span><span class="token punctuation">(</span><span class="token variable">$v</span><span class="token punctuation">,</span> <span class="token constant boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// true = no immediate output to browser </span> <span class="token punctuation">}</span> <span class="token function">file_put_contents</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'./debug.txt'</span><span class="token punctuation">,</span> <span class="token variable">$v</span><span class="token punctuation">,</span> <span class="token constant">FILE_APPEND</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> </code></pre> <p>Liebe Grüße,</p> <p>Felix Riesterer.</p> <div class="signature">-- <br> "Wäre die EU ein Staat, der die Aufnahme in die EU beantragen würde, müsste der Antrag zurückgewiesen werden - aus Mangel an demokratischer Substanz." (Martin Schulz, Präsident des EU-Parlamentes) </div> Problem mit Ajax-Anfrage Sun, 05 Oct 14 14:32:31 Z https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622608#m1622608 https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622608#m1622608 <p>Hallo Felix,</p> <p>oh, das könnte hilfreich sein.</p> <p>Ich kann mir das aber leider erst später anschauen, weil ich jetzt weg muss.</p> <p>Gruß,<br> Enrico</p> Problem mit Ajax-Anfrage Sun, 05 Oct 14 10:44:49 Z https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622611#m1622611 https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622611#m1622611 <p>Hallo 1UnitedPower,</p> <p>ich habe den Tip von  umgesetzt, dann kommt allerdings der "Fehler: TypeError: a.target is undefined".</p> <p>Ich verstehe nicht, warum mein Code nicht funktioniert, da ich, außer der Tatsache, dass nichts zurückgeliefert wird, keine alert-Ausgaben oder Fehler in der Konsole habe.</p> <p>Gruß,<br> Enrico</p> Problem mit Ajax-Anfrage Sun, 05 Oct 14 10:42:44 Z https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622613#m1622613 https://forum.selfhtml.org/self/2014/oct/5/problem-mit-ajax-anfrage/1622613#m1622613 <p>Hallo Felix,</p> <blockquote> <p>was sagt denn die Fehlerkonsole Deines Browsers dazu?</p> </blockquote> <p>"Leider" gar nichts, d.h. sie gibt mir keine(n) Fehler aus.</p> <p>Ich habe den Tip von 1UnitedPower umgesetzt, dann kommt allerdings der "Fehler: TypeError: a.target is undefined".</p> <p>Gruß,<br> Enrico</p>