Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   AJAX-Prinzip mit PHP (https://www.delphipraxis.net/75107-ajax-prinzip-mit-php.html)

Nils_13 14. Aug 2006 15:26


AJAX-Prinzip mit PHP
 
Hi,

wie kann ich das AJAX-Prinzip mit PHP programmieren ? Ich möchte nämlich nicht ständig die Seite neuladen, sondern nur die Texte und evtl. auch Bilder. Ich könnte ja auch AJAX benutzen, aber ich habe mich mit PHP und HTML angefreundet und habe auf XML einfach keine Lust.

Damit ihr euch genauer vorstellen könnt, was ich programmieren möchte:
http://www.bilder-hochladen.net/files/u02-c.png

mkinzler 14. Aug 2006 15:34

Re: AJAX-Prinzip mit PHP
 
Es ibt verschiedene PHP-Klassen, die die Datenübertragung per XML/JSON kapseln. z.B. PEAR HTML-AJAX, PRAJAX, SAJAX, ...

Nils_13 14. Aug 2006 15:53

Re: AJAX-Prinzip mit PHP
 
Hat jemand ein Beispiel zu den eben genannten Klassen, welches einen Text ausgibt ? Aus dem SAJAX Beispielen werde ich nicht schlau.

mkinzler 14. Aug 2006 16:04

Re: AJAX-Prinzip mit PHP
 
Die Ausgabe muß dann in JS erefolgen. man gibt eine callback-Routine an, welche dann aufgerufen wird.

omata 14. Aug 2006 16:04

Re: AJAX-Prinzip mit PHP
 
Hallo,

ich möchte einfach nur mal ein paar Gedanken zu dem Thema los werden...

Was ich an diesem AJAX einfach nicht so dolle finde ist, dass es ohne Javascript nicht funktioniert. Ok ich sehe ja ein das der Komfort nur mit möglich ist. Aber das die Seiten ohne Javascript völlig unbrauchbar werden finde ich einfach nur schlecht. Oder gibt es da einen Ansatz? Ich lade zur Zeit auch immer die Seiten nach. Das hat den Vorteil, dass wenn kein Javascript aktiviert ist eben NOSCRIPT-Tag-Inhalte für die weitere Funktion garantieren, die man mit Javascript gar nicht zu Gesicht bekommt.
Deshalb setze ich solche AJAX-Geschichten zur Zeit nicht ein, weil meine Lösung einfach flexibler auf den Besucher der Seite eingeht.

Wie gesagt, es müsste eine flexible Lösung geben, die einem bei solchen Bestrebungen unterstützt. Trotzdem sollten die Seiten auch ohne Javascript voll funktionsfähig bleiben.

Gruss
Thorsten

faux 14. Aug 2006 16:06

Re: AJAX-Prinzip mit PHP
 
Also kann sein, dass ich mich da jetzt völlig irre, aber ich glaube mal gelesen zu haben, dass das auch per CSS möglich sein soll. Kann auch völliger schwachsinn sein (passt net ganz zu CSS), aber ich glaube dass ich das mal wo gelesen hab.

Grüße
Faux

Meflin 14. Aug 2006 16:08

Re: AJAX-Prinzip mit PHP
 
Also für das obige Beispiel brauchst du kein AJAX - da reichen 2 stinknormale CSS-Klassen, eine für Text=unsichtbar, eine für Text=Sichtbar. Dann Schreibst du deinen ganzen Text in einem Dokument, hast aber eben nur einen Abschnitt auf den die CSS-Klasse "sichtbar" angewandt wird. Beim Klick auf die Tabs kannst du dann per JavaScript (Das braucht man dann doch) die CSS-Klasse verändern. Und falls das nicht gehen sollte, kannst du ja auch per Klick nur den anzuzeigenden Text verändern.


alcaeus 14. Aug 2006 16:10

Re: AJAX-Prinzip mit PHP
 
Zitat:

Zitat von omata
Was ich an diesem AJAX einfach nicht so dolle finde ist, dass es ohne Javascript nicht funktioniert. Ok ich sehe ja ein das der Komfort nur mit möglich ist. Aber das die Seiten ohne Javascript völlig unbrauchbar werden finde ich einfach nur schlecht. Oder gibt es da einen Ansatz? Ich lade zur Zeit auch immer die Seiten nach. Das hat den Vorteil, dass wenn kein Javascript aktiviert ist eben NOSCRIPT-Tag-Inhalte für die weitere Funktion garantieren, die man mit Javascript gar nicht zu Gesicht bekommt.
Deshalb setzt ich solche AJAX-Geschichten zur Zeit nicht ein, weil meine Lösung einfach flexibler auf den Besucher der Seite eingeht.
Wie gesagt, es müsste eine flexible Lösung geben, die einem bei solchen Bestrebungen unterstützt. Trotzdem sollten die Seiten auch ohne Javascript voll funktionsfähig bleiben.

Da kannst du dir eine Eigenschaft von Browsern zugute kommen lassen. Nehmen wir an, dass du folgenden Link hast:
Code:
[url="somepage.php"]Foobar[/url]
Nun willst du eine AJAX-Funktion einbauen:
Code:
[url="javascript:doAJAXRequest()"]Foobar[/url]
Oopsie, jetzt gibts ein Problem. Wenn JS deaktiviert ist, krachts natuerlich. Was machen?

doAJAXRequest() muss einen Rueckgabe wert haben; true wenn der Request gesendet werden konnte, false wenn nicht. Das kommt dann so ins onclick rein:
Code:
[url="somepage.php"]Foobar[/url]
Was ist die Eigenschaft der Browser? Wenn im onclick false zurueckgegeben wird, folgt der Browser dem Link nicht, das macht er nur wenn true (oder eben nichts) zurueckgegeben wird. Im Erfolgsfall gibt doAJAXRequest() also true zurueck, wir negieren dies und geben es zurueck. Ergebnis: der Browser folgt dem Link nicht.

Getestet in allen moeglichen IE-, Fx-, Opera-, Safari-, Konqueror-Versionen dieser Welt.

Greetz
alcaeus

omata 14. Aug 2006 16:14

Re: AJAX-Prinzip mit PHP
 
Das hört sich interresant an.

Aber wie würde das bei Auswahlboxen aussehen?

Wenn ich in einer Auswahlbox etwas auswähle sollen Inhalte der zweiten Auswahlbox nachgeladen werden.

Gruss
Thorsten

mkinzler 14. Aug 2006 16:17

Re: AJAX-Prinzip mit PHP
 
Du würdest im onChange der ersten Combobox eine Methode der Ajax-Klasse aufrufen, welche du neben dem Schlüssel die Callback-Funktion mitgibst. Diese callbackfunktion wird dann mit dem Ergebnis aufgerufen.

omata 14. Aug 2006 16:20

Re: AJAX-Prinzip mit PHP
 
Ja, das ist klar. Aber was passiert wenn JS deaktiviert ist?

alcaeus 14. Aug 2006 16:20

Re: AJAX-Prinzip mit PHP
 
@mkinzler: es geht darum, das Ganze auch ohne AJAX laufen zu lassen ;)

Im onchange der Auswahlbox wird der Inhalt der zweiten Box nachgeladen. Zusaetzlich zeigst du einen Button an, mit dem dies manuell geschehen kann. Diesen Button blendest du nach dem Page-Load und nach einem AJAX-Compatibility-Test per Javascript aus. Die Folge: kann der Browser AJAX, verschwindet der Button, kann er es nicht, bleibt er. Wichtig ist, dass der Button nur in dem einen Fall ausgeblendet wird, sonst muss er da sein ;)
Der Button schickt dann das ganze Formular an den Server.

Greetz
alcaeus

Nils_13 14. Aug 2006 16:23

Re: AJAX-Prinzip mit PHP
 
Brauch ich für AJAX noch irgendwelche Zusatzdateien ?

Wenn ich es richtig verstanden habe, ist es dann auch möglich, wenn false zurückgeliefert wurde, die Seite zu verlinken.

mkinzler 14. Aug 2006 16:25

Re: AJAX-Prinzip mit PHP
 
Zitat:

Brauch ich für AJAX noch irgendwelche Zusatzdateien ?
Auf dem Client? Nein.

alcaeus 14. Aug 2006 16:26

Re: AJAX-Prinzip mit PHP
 
Zitat:

Zitat von Nils_13
Brauch ich für AJAX noch irgendwelche Zusatzdateien ?

Kommt drauf an wie du deine Seite aufbaust. Wichtig ist nur, dass du anhand eines Requests die Daten bekommst, die ausgetauscht werden sollen.

Greetz
alcaeus

omata 14. Aug 2006 16:31

Re: AJAX-Prinzip mit PHP
 
@alcaeus: Ja, das ist im Prinzip ja das was ich jetzt auch schon mache (NOSCRIPT-Tags).

Aber, ich muss zugeben ich habe mich noch nicht so genau mit AJAX beschäftigt, ist es möglich diese beiden Wege (JS->AJAX, kein JS->normales sumit) intern auf der Seite zusammenzuführen? Mir wäre es nämlich wichtig, das ich inhaltliche Teile nur einmal coden muss.

Das würde bedeuten, das schon ausgewählte Inhalte und dieser neue Inhalt ja bei deaktiviertem JS als komplette Seite neu geladen werden. Soweit klar und das mache ich zur Zeit alles selber.
Meine eigentlich Frage ziehlt mehr auf die Einfachheit ab. Unterstützt mich AJAX da und ist der Code noch leserlich? (Ich meine damit die Serverseite).

Edit: Habe noch diese Link gefunden.

Gruss
Thorsten

Nils_13 14. Aug 2006 16:36

Re: AJAX-Prinzip mit PHP
 
Auf der "alten" Seite, die ich eigentlich bald online stellen wollte (mir ist diese Feinheit gestern eingefallen, deshalb dauert das noch seine Zeit), habe ich viele PHP/HTML-Dateien, die so aufgebaut sind:
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<headerzeugs>

CSS-Abschnitt1:
Hier kommt dann auch schon nach dem Logo das Menü. Es soll, abgesehen von den Farben, so wie oben aussehen (=Tabsheets). Hier werden bei einem Klick die Texte, die Links und die Bilder verändert.

CSS-Abschnitt2:
Hier kommt der zu verändernde Text hin
</alleswiederschließen>
Wäre es nicht auch eine Möglichkeit, es so zu lösen, wie hier?

generic 15. Aug 2006 16:06

Re: AJAX-Prinzip mit PHP
 
hier hat mit ajax nichts zu tun.
das ist nur ein js welches das design umschaltet.
der inhalt ist bereits geladen.

ajax läd context sensitiv daten nach.

Nils_13 15. Aug 2006 17:30

Re: AJAX-Prinzip mit PHP
 
Ok, ich habe diesen Code:
Code:
<script type="text/javascript">
function show () {
  if (document.getElementById)
    document.getElementById("test").style.visibility = "visible";
}

function hide () {
  if (document.getElementById)
    document.getElementById("test").style.visibility = "hidden";
}
</script>
Weiß jemand, wie ich show und hide um einen Parameter erweitern kann, damit ich auch alles nicht nur auf "test" zugreifen kann ? (In JS kenn ich mich leider nicht so gut aus)

mkinzler 15. Aug 2006 17:34

Re: AJAX-Prinzip mit PHP
 
Was meinst du mit "alles"?

omata 15. Aug 2006 17:50

Re: AJAX-Prinzip mit PHP
 
Versuch es doch mal so...

Code:
<script type="text/javascript">
function show (elem) {
  if (document.getElementById)
    document.getElementById(elem).style.visibility = "visible";
}

function hide (elem) {
  if (document.getElementById)
    document.getElementById(elem).style.visibility = "hidden";
}
</script>
Gruss
Thorsten

Nils_13 15. Aug 2006 19:35

Re: AJAX-Prinzip mit PHP
 
Und warum wird dann nichts angezeigt ?
Code:
[url="javascript:show(test)"]test[/url]

mkinzler 15. Aug 2006 19:40

Re: AJAX-Prinzip mit PHP
 
Versuchs mal mit
Code:
[url="javascript:show("]test[/url]

Nils_13 15. Aug 2006 20:07

Re: AJAX-Prinzip mit PHP
 
Das habe ich schon probiert. Wenn ich dann auf den Link klicke passiert weiterhin nichts. Hier mal die gesamte, kleine Testdatei:
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<title></title>
<meta name="author" content="NILS1">
<meta name="generator" content="Ulli Meybohms HTML EDITOR">
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">

<script type="text/javascript">
function show (elem) {
  if (document.getElementById)
    document.getElementById(elem).style.visibility = "visible";
}

function hide (elem) {
  if (document.getElementById)
    document.getElementById(elem).style.visibility = "hidden";
}
</script>

  <h1 id="test" style="visibility:hidden">Text</h1>
 

[url="javascript:show("]Anzeigen![/url]</p>
 

[url="javascript:hide("]Verstecken![/url]</p>

</body>
</html>

mkinzler 15. Aug 2006 20:10

Re: AJAX-Prinzip mit PHP
 
Sorry, doppelte Hochkommata sind innerhalb derselben natürlich schlecht besser so:
Code:
[url="javascript:show('test');"]test[/url]

Nils_13 15. Aug 2006 21:15

Re: AJAX-Prinzip mit PHP
 
Danke, das läuft soweit.

Hat jemand eine Idee, wie ich das besser strukturieren könnte ? Es gibt sagen wir mal 10 Links. Wenn ich Link 2 anklicke, wird alles andere ausgeblendet, aber selbst das macht Probleme, denn es steht dann alles untereinander, aber der Text soll ja gewechselt werden. Es steht am Ende alles in dem Shema da:
Zitat:

A B C D
Text zu A
Text zu C
Aber Text zu C soll auch in der Zeile und an der selben Position, wie Test zu A stehen.

mkinzler 16. Aug 2006 05:20

Re: AJAX-Prinzip mit PHP
 
Dann kannst du entweder mit einem Element arbeiten, dessen Text du zur Laufzeit veränderst oder mit gestapelten DIVs, welche du beim Klicken rotierst (z-Index)

freak4fun 16. Aug 2006 08:11

Re: AJAX-Prinzip mit PHP
 
Ich hab mal den Code von oben 1zu1 übernommen und es geht bei mir mit opera nicht. :( Hast du das mit Opera getestet?

//Edit: Ich sollte erst alles lesen. :pale:

MfG
freak

mkinzler 16. Aug 2006 08:16

Re: AJAX-Prinzip mit PHP
 
Hast du das Semikolon am Ende der Anweisung ergänzt?

freak4fun 16. Aug 2006 08:19

Re: AJAX-Prinzip mit PHP
 
Zitat:

Zitat von mkinzler
Hast du das Semikolon am Ende der Anweisung ergänzt?

Ja, aber wie gesagt nur copy & paste. Hatte die ' nicht geändert. ;)

MfG
freak

Nils_13 16. Aug 2006 08:23

Re: AJAX-Prinzip mit PHP
 
@mkinzler: Meinst du so etwas ?
Code:
<div id="">
Wie rotiert man denn divs?

freak4fun 16. Aug 2006 08:40

Re: AJAX-Prinzip mit PHP
 
Wenn man das über das "Hide" und "Show" macht werden ja alle Daten geladen. Auch die, die der Besucher gar nicht möchte. Es ist vielleicht nicht viel, aber ich wollte es mal zu bedenken geben. MAn muss ja auch noch an die Modem/isdn-Nutzer denken. ;)

Wenn du mehrere div-Elemente hast die untereinander liegen. Also nur das oberste zu sehen ist, kannst du über den z-index festlegen, welches Element oben liegt. :)

MfG
freak

Nils_13 16. Aug 2006 08:57

Re: AJAX-Prinzip mit PHP
 
Code:
<style type="text/css">
<!--
 .examplediv
 {
  background-color:#efefef;
  border-style:solid #000000 1px;
 }
#divid1
{
 position:absolute;visibility:hidden;
 left:450px; top:350px; width:300px; height:150px;
 z-index:1;
}
#divid2
{
 position:absolute;visibility:hidden;
 left:450px; top:350px; width:300px; height:150px;
 z-index:2;
}
// -->
</style>


<div id="divid1" class="examplediv">

</div>

<div id="divid2" class="examplediv">

</div>
So etwas ?

mkinzler 16. Aug 2006 09:13

Re: AJAX-Prinzip mit PHP
 
XML-Code:
<html>
<head>
  <script>
     function show( elem) {
     if (document.getElementById)
          document.getElementById(elem).style.zIndex= 6;
     }
  </script>
</head>
<body>
<div id="cont" style="position:absolute; top:0px; left:0px; width:100px; height: 20px; z-index:5 ;background:#fff;">

  <div id="empty" style="position:absolute; top:0px; left:0px; z-index:5; background:#fff;">
   
  </div>
  <div id="A" style="position:absolute; top:0px; left:0px; z-index:4; background:#fff;">
   Text A
  </div>

  <div id="B" style="position:absolute; top:-0px; left:0px; z-index:3; background:#fff;">
    Text B
  </div>

  <div id="C" style="position:absolute; top:0px; left:0px; z-index:2; background:#fff;">
    Text C
  </div>

  <div id="D" style="position:absolute; top:0px; left:0px; z-index:1; background:#fff;">
    Text D
  </div>
</div>


[url="javascript:show('A');"]A Anzeigen![/url]</p>


[url="javascript:show('B');"]B Anzeigen![/url]</p>


[url="javascript:show('C');"]C Anzeigen![/url]</p>


[url="javascript:show('D');"]D Anzeigen![/url]</p>
</body>
</html>

Nils_13 16. Aug 2006 09:29

Re: AJAX-Prinzip mit PHP
 
Der Code läuft soweit, aber wenn man D angezeigt hat und dann auf einen anderen Link klickt, wird der angeklickte Link nicht mehr ausgeführt bzw. angezeigt.

mkinzler 16. Aug 2006 09:36

Re: AJAX-Prinzip mit PHP
 
Das war auch nicht als Musterlösung, sondern als Beispiel gedacht. Du mußt nach dem du den DIV in den Vordergrund geschoben hast, den vorherigen nach hinten schieben (z-Index < )

Nils_13 16. Aug 2006 09:41

Re: AJAX-Prinzip mit PHP
 
Und wie macht man das wieder ?

mkinzler 16. Aug 2006 09:43

Re: AJAX-Prinzip mit PHP
 
Genauso wie du den einen DIV nach vorne geschoben hast:
Code:
document.getElementById(<elemname>).style.zIndex= 0;

Nils_13 16. Aug 2006 09:48

Re: AJAX-Prinzip mit PHP
 
Dann bin ich aber wieder beim Alten. Dann muss ich ja alle anderen Texte wieder auf 0 setzen.

mkinzler 16. Aug 2006 09:55

Re: AJAX-Prinzip mit PHP
 
Du kannst dir DIVs anfänglich alle auf 0 setzen und dann beim Aktivieren die Position immer um 1 erhöhen. dann funktioniert es ein Weilchen.
[Edit: Blöde Idee]


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:40 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz