![]() |
| | Themen-Optionen | Thema durchsuchen |
| | Nach oben #1 |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.516
|
Hallo, ich habe hier gerade mal ein kleines AJAX-Beispiel, welches nicht funktioniert. Ich habe mir das mal zusammengesucht und dachte jetzt eigentlich, dass das auch so laufen müsste. Die .html-Datei: HTML-Code: <html> <head> <script type="text/javascript" language="javascript"> var requestObject = null; /** * createRequestObject() * * This function returns an requestObject. Either an ActiveXObject if the client uses the * Internet Explorer or a XMLHttpRequest object. */ function createRequestObject() { var localRequestObject; var browser = navigator.appName; if(browser == "Microsoft Internet Explorer"){ localRequestObject = new ActiveXObject("Microsoft.XMLHTTP"); } else{ localRequestObject = new XMLHttpRequest(); } return localRequestObject; } /** * sendRequest(string) * * The parameter defines the PHP file that should be executed. */ function sendRequest(phpFile) { requestObject.open('get', phpFile); requestObject.onreadystatechange = handleResponse; requestObject.send(null); } function handleResponse() { if((requestObject.readyState == 4) && ( requestObject.status == 200 ) ) { document.getElementById("colorSwitch").innerHTML = requestObject.responseText; } } function changeColor(request) { createRequestObject(); sendRequest(request); } </script> </head> <body> <a href="#" onclick="changeColor('script.php?color=red')">switch color</a> <div id="colorSwitch">default (black)</div> </body> </html> PHP-Code: Ein Beispiel von Lars funktioniert dagegen einwandfrei. HTML-Code: <html> <head> <script type="text/javascript" language="javascript"> var httpObject = false; /** * Liefert das HTTPXML-Objekt und baut * automatisch eine HTTP-Verbindung zum Host-Server auf. */ function setHttpObject() { // Wenn der Browser kein HTTPXML-Objekt // zur Verfügung stellt, wird eine Exception geworfen. try { // Mozilla bietet XMLHttpRequest, // der IE das ActiveX-Equivalent. httpObject = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); } catch(exception) { // [...] } } /** * Sendet einen GET-Request. */ function request($request) { // Beginnt den Request. httpObject.open('get', $request); // Event-Handler für Statusänderungen der // Verbindung setzen. httpObject.onreadystatechange = response; // Sendet den von httpObject.open() begonnen Request. httpObject.send(null); } /** * Event-Handler für Statusänderungen der Verbindung. */ function response() { // readyState = 4 (completed) // 0 = uninitialized ; // 1 = loading ; // 2 = loaded ; // 3 = interactive // status = 200 (okay) if((httpObject.readyState == 4) && ( httpObject.status == 200 ) ) { // Ist der request abgeschlossen und der // Return-Code gleich 200, wird die // Antwort ins HTML geschrieben. document.getElementById("inhalt").innerHTML = httpObject.responseText; } } /** * Ändert den Inhalt des Elements mit der ID "inhalt". */ function inhaltAendern() { // Das HTTPXML-Objekt setzen. setHttpObject(); // Den Request senden. request("phpscript.php"); } </script> </head> <body> <input type="button" name="inhaltAendern" onclick="inhaltAendern();" value="Inhalt ändern" /> <div id="inhalt"> alter inhalt </div> </body> </html> PHP-Code: Danke schön Grüße Ben. Geändert von Jann Hendrik (15.08.2008 um 08:01 Uhr) Grund: link angepasst |
| | |
| | Nach oben #2 |
| Goldman.de Registriert seit: 09.10.2005 Ort: Frankfurt am Main
Beiträge: 190
|
also dieser code fuktioniert einwandfrei Code: <html>
<head>
<script type="text/javascript" language="javascript">
var httpObject = false;
/** * Liefert das HTTPXML-Objekt und baut * automatisch eine HTTP-Verbindung zum Host-Server auf. */
function setHttpObject() {
// Wenn der Browser kein HTTPXML-Objekt // zur Verfügung stellt, wird eine Exception geworfen.
try {
// Mozilla bietet XMLHttpRequest, // der IE das ActiveX-Equivalent.
httpObject = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
} catch(evt) {
// [...]
alert("Sorry, your browser is not AJAX-enabled!");
}
}
/** * Sendet einen GET-Request. */
function request($request) {
// Beginnt den Request.
httpObject.open('get', $request);
// Event-Handler für Statusänderungen der // Verbindung setzen.
httpObject.onreadystatechange = response;
// Sendet den von httpObject.open() begonnen Request.
httpObject.send(null);
}
/** * Event-Handler für Statusänderungen der Verbindung. */
function response() {
// readyState = 4 (completed)
// 0 = uninitialized ;
// 1 = loading ;
// 2 = loaded ;
// 3 = interactive
// status = 200 (okay)
if((httpObject.readyState == 4) && ( httpObject.status == 200 ) ) {
// Ist der request abgeschlossen und der
// Return-Code gleich 200, wird die
// Antwort ins HTML geschrieben.
document.getElementById("inhalt").innerHTML = httpObject.responseText;
}
}
/** * Ändert den Inhalt des Elements mit der ID "inhalt". */
function inhaltAendern() {
// Das HTTPXML-Objekt setzen.
setHttpObject();
// Den Request senden.
request("test.php");
}
</script>
</head>
<body>
<input type="button" name="inhaltAendern" onclick="inhaltAendern();" value="Inhalt ändern" />
<div id="inhalt"> alter inhalt </div>
</body>
</html>
Code: echo 'cool'; ka was dein Prob ist |
| | |
| | Nach oben #4 |
| me pro ok? Registriert seit: 07.09.2005 Ort: Pulheim bei Köln
Beiträge: 964
| Code: function sendRequest(phpFile) {
requestObject.open('get', phpFile);
requestObject.onreadystatechange = handleResponse;
requestObject.send(null);
}
// Edit: Das gleich auch in handleResponse(). Außerdem gibt createRequestObject() das Objekt zurück, d. h. du musst es auch irgendwie abfangen.
__________________ Gedanken aus Draht stricken einen Zaun. |
| | |
| | Nach oben #5 |
| Goldman.de Registriert seit: 09.10.2005 Ort: Frankfurt am Main
Beiträge: 190
|
naja bei deinem code solltest du entweder den unterschied zwischen localRequestObject requestObject erkennen oder requestObject auch localRequestObject zuweisen Code: <script type="text/javascript" language="javascript">
var localRequestObject = null;
/**
* createRequestObject()
*
* This function returns an requestObject. Either an ActiveXObject if the client uses the
* Internet Explorer or a XMLHttpRequest object.
*/
function createRequestObject() {
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
localRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
}
else{
localRequestObject = new XMLHttpRequest();
}
return localRequestObject;
}
/**
* sendRequest(string)
*
* The parameter defines the PHP file that should be executed.
*/
function sendRequest(phpFile) {
localRequestObject.open('get', phpFile);
localRequestObject.onreadystatechange = handleResponse;
localRequestObject.send(null);
}
function handleResponse() {
if((localRequestObject.readyState == 4) && ( localRequestObject.status == 200 ) ) {
document.getElementById("colorSwitch").innerHTML = localRequestObject.responseText;
}
}
function changeColor(request) {
createRequestObject();
sendRequest(request);
}
</script>
ps: entweder ist: return localRequestObject; sinnbefreit oder du schnappst den return und weist es dem requestObject zu Geändert von J33d3X (02.11.2005 um 21:30 Uhr) |
| | |
| | Nach oben #6 | |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.516
| Zitat:
Wenn ich es so mache, dann geht es: HTML-Code: requestObject = localRequestObject; | |
| | |
| | Nach oben #10 | |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.516
| Zitat:
AJAX stellt ja auch eigentlich nur eine Komfortlösung dar, aus dem von dir angesprochenen Grund. Grüße Ben. | |
| | |
| | Nach oben #11 |
| Gast
Beiträge: n/a
|
Hier ein Artikel zu AJAX: http://www.usabilityviews.com/ajaxsucks.html - Why Ajax Sucks (Most of the Time)
|
|
| | Nach oben #14 |
| Verplanter Benutzer Registriert seit: 14.12.2004
Beiträge: 238
|
Ähm wie bekomme ich den request zurück !? Code: function sendGetRequest(phpFile) {
if (!xhttp) {
alert("An Error occured when trying to initialize XMLHttpRequest!");
return; // exit
}
xhttp.open('get', phpFile);
xhttp.onreadystatechange = handleResponse;
xhttp.send(null);
}
function handleResponse() {
if((xhttp.readyState == 4) && (xhttp.status == 200 ) ) {
alert ( xhttp.responseText );
}
}
document.getElementById("colorSwitch").innerHTML Hmm ... gibts da eine Übersicht was für Elemente es gibt ... (getElementById)
__________________ Das Leben ist zwar bloß ein Adventure-Game, aber die Grafik ist verdammt gut. Ich such immer noch den Cheat für unlimited money! |
| | |
| | Nach oben #15 | |
| Patrick Freitag Registriert seit: 17.08.2005
Beiträge: 127
| Zitat:
document.getElementById("colorSwitch").innerHTML = xhttp.responseText; | |
| | |
| | Nach oben #16 |
| Verplanter Benutzer Registriert seit: 14.12.2004
Beiträge: 238
|
Hmm, dann habe ich das evtl. bischen falsch gesehen. Bei dem Link gibt er die ganze Seite wieder zurück ... Ist also doch nur um Feinheiten nachzuladen, hatte das im Template Compiler komplett umgesetzt das er auch Links einfach mittels Ajax umsetzt. Dann werde ich normale SeitenLinks (hab irgendwo auch beim lesen gesehen das dies auch für die Suchm. besser ist.) auf dem "normalen" wege erstellen und eine Option mit einbauen wenn nur bestimmter Seiten Inhalt behandet wird per Ajax (im Template Format). Nur müsste er dann für bestimmte Bereiche auch eine eigenes Ajax Script haben das dann mit geladen wird. .... Hmmm
__________________ Das Leben ist zwar bloß ein Adventure-Game, aber die Grafik ist verdammt gut. Ich such immer noch den Cheat für unlimited money! |
| | |
| | Nach oben #17 | |
| Patrick Freitag Registriert seit: 17.08.2005
Beiträge: 127
| Zitat:
| |
| | |
| | Nach oben #18 |
| Verplanter Benutzer Registriert seit: 14.12.2004
Beiträge: 238
|
Naja, nicht so Optional, sondern eben nur an den User gebunden ob er es denn zulässt ... bin noch am Lesen und Werkeln ... *hmpf
__________________ Das Leben ist zwar bloß ein Adventure-Game, aber die Grafik ist verdammt gut. Ich such immer noch den Cheat für unlimited money! |
| | |
| | Nach oben #19 |
| Patrick Freitag Registriert seit: 17.08.2005
Beiträge: 127
| Trotzdem hat "Unobtrusive JavaScript" den Vorteil das du nicht an JavaScript gebunden bist. Wenn es ausgeschaltet ist, wird auch nix ausgeführt. Demnach musst du deine Widgets dann sowieso so programmieren das sie auch ohne JavaScript funktionieren. Gewisse Widgets müssen wahrscheinlich auch nicht zwingend verwendet werden, ist der User mit ausgeschaltetem JavaScript eben selbst schuld.
|
| | |
| | Nach oben #20 |
| Verplanter Benutzer Registriert seit: 14.12.2004
Beiträge: 238
|
Ahoi, also ich glaube ich raff es nicht, wie komme ich mit php nun auf den Request? Das mit der Id ist gechckt nur muss das ja auch einzelln global gehen oder !? PHP-Code:
__________________ Das Leben ist zwar bloß ein Adventure-Game, aber die Grafik ist verdammt gut. Ich such immer noch den Cheat für unlimited money! Geändert von DasMööp (09.11.2008 um 22:36 Uhr) |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | Thema durchsuchen |
| |
Ähnliche Themen |