Flash laden met AJAX geeft fout

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Ypho
  • Registratie: April 2008
  • Nu online

Ypho

Allround Nerd

Topicstarter
Ik heb een PHP website gemaakt die asynchroon de pagina's laadt in een divje. Nu heb ik een flash fotoalbum, en die moet geladen worden in een divje in het hoofd-divje.

Het zit als volgt in elkaar: In index.php staat het menu, die vraagt via ajax.php de juiste pagina op en laadt de pagina pictures.php in de div content. In pictures.php staan 2 divjes, de eerste div staan alle albums in, de tweede div heet loadAlbum. Op dezelfde manier als de pagina's worden opgevraagd, wordt zo ook de pagina showAlbum.php opgevraagd en geplaatst in de div loadAlbum.

Nu krijg ik constant de melding "Flash player is needed, download....etc". Terwijl het album wel goed wordt weergegeven als ik showAlbum.php direct opvraag in mijn browser.

Heeft iemand enig idee hoe dit kan komen, en hoe ik dit kan oplossen zonder het album in een nieuw venster hoef te openen?

🃏 TCG Codex - Je volledige TCG verzameling in je broekzak ::: 🍏 TCG Codex for iOS ::: 🤖 TCG Codex for Android


Acties:
  • 0 Henk 'm!

  • Rekcor
  • Registratie: Februari 2005
  • Laatst online: 05-09 21:08
Heb je wat relevante code? En hoe laadt je je PHP-bestand in die DIV?

Acties:
  • 0 Henk 'm!

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 19:30

killercow

eth0

Volgens mij heb je het hele concept Ajax niet helemaal begrepen.

Ja je kunt dynamisch content van pagina's ophalen, maar het is geen goed plan (of nuttig) om de initieel getoonde inhoud op je site door middel van javascript te requesten.

Het idee is om binnen een reeds gelade pagina kliks te vermijden door de nieuwe content op te halen met ajax, en deze dan in XML vorm aan de browser aan te bieden.

Wat je op homepage doet heeft 2 grote nadelen, Als javascript uit staat doet het helemaal niks, terwijl je ajax oplossing niks toevoegt wat niet met gewoon linkjes zou kunnen.
zoekmachines, telefoons en andere browsers kunnen er ook niks mee, wat je site in wezen waardeloos maakt voor een steeds groter worden groep bezoekers, om nog maar te zwijgen van de wegblijvende bezoekers uit zoekmachines.

Daarnaast is je huidige php implementatie lek, je kunt ieder willekeurig php bestand includen door het pad in het page argument te gooien.

Ajax moet vooral klikjes besparen, en zo de website sneller maken, of het moet functionaliteit aanbieden die echt niet mogelijk is zonder ajax, maar zelfs dan moet je je afvragen of het niet met 2 of 3 afzonderlijke wizzard achtige pagina's op te lossen valt.

[ Voor 6% gewijzigd door killercow op 31-10-2008 13:42 ]

openkat.nl al gezien?


Acties:
  • 0 Henk 'm!

  • Ypho
  • Registratie: April 2008
  • Nu online

Ypho

Allround Nerd

Topicstarter
killercow schreef op vrijdag 31 oktober 2008 @ 13:39:
Volgens mij heb je het hele concept Ajax niet helemaal begrepen.

Ja je kunt dynamisch content van pagina's ophalen, maar het is geen goed plan (of nuttig) om de initieel getoonde inhoud op je site door middel van javascript te requesten.

Het idee is om binnen een reeds gelade pagina kliks te vermijden door de nieuwe content op te halen met ajax, en deze dan in XML vorm aan de browser aan te bieden.

Wat je op homepage doet heeft 2 grote nadelen, Als javascript uit staat doet het helemaal niks, terwijl je ajax oplossing niks toevoegt wat niet met gewoon linkjes zou kunnen.
zoekmachines, telefoons en andere browsers kunnen er ook niks mee, wat je site in wezen waardeloos maakt voor een steeds groter worden groep bezoekers, om nog maar te zwijgen van de wegblijvende bezoekers uit zoekmachines.

Daarnaast is je huidige php implementatie lek, je kunt ieder willekeurig php bestand includen door het pad in het page argument te gooien.

Ajax moet vooral klikjes besparen, en zo de website sneller maken, of het moet functionaliteit aanbieden die echt niet mogelijk is zonder ajax, maar zelfs dan moet je je afvragen of het niet met 2 of 3 afzonderlijke wizzard achtige pagina's op te lossen valt.
De reden dat ik dit heb gedaan is dat niet bij elke klik de pagina (layout etc) opnieuw geladen moet worden. Vwb het page=xx argument, hier kan in principe niets anders worden ingeladen dan de pagina's die vooraf in een array staan waar op gecontroleerd wordt, maar dit kan jij niet weten natuurlijk.

Over het javascript heb je wel gelijk, maar is het niet verstandig om voor mobile telefoons een lichte versie te maken, zonder te grote afbeeldingen, lagere resolutie etc. Dit was namelijk wel mijn idee.

🃏 TCG Codex - Je volledige TCG verzameling in je broekzak ::: 🍏 TCG Codex for iOS ::: 🤖 TCG Codex for Android


Acties:
  • 0 Henk 'm!

  • TheBorg
  • Registratie: November 2002
  • Laatst online: 23-09 17:18

TheBorg

Resistance is futile.

Insert alleen de flash object/embed code en niet het hele version detectie verhaal.

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 22-09 16:31

Bosmonster

*zucht*

Ypho schreef op vrijdag 31 oktober 2008 @ 13:53:
[...]

De reden dat ik dit heb gedaan is dat niet bij elke klik de pagina (layout etc) opnieuw geladen moet worden.
Dat is dezelfde reden dat sommige mensen nog steeds frames gebruiken. M.a.w. ONZIN.

Iedere moderne browser heeft gewoon caching-modelijkheden en geen enkel probleem om de layout in een paar microseconden opnieuw op te bouwen zonder dat je er wat van ziet.

Acties:
  • 0 Henk 'm!

  • Ypho
  • Registratie: April 2008
  • Nu online

Ypho

Allround Nerd

Topicstarter
Rekcor schreef op vrijdag 31 oktober 2008 @ 13:26:
Heb je wat relevante code? En hoe laadt je je PHP-bestand in die DIV?
Menulinks: <a href="" onclick="pageRequest('ajax.php?page=showAlbum','content'); return false;" class="menu">Foto's</a>

JS Code, uiteraard wordt gebruik gemaakt van het aangemaakte xmlhttp request:
function pageRequest(requestedPage, loadDiv){
var obj = document.getElementById(loadDiv);
xmlhttp.open("GET", requestedPage);
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
obj.innerHTML = xmlhttp.responseText;
}
}
xmlhttp.send(null);
}

ajax.php is de pagina die in de div content wordt gegooid, hij regelt ook het includen en de controle etc.

Dit is de code die mijn swf album moet laden:

<div id="flashcontent">Gallery requires Macromedia Flash. <a href="http://www.macromedia.com/go/getflashplayer/">Get Macromedia Flash.</a></div>
<script type="text/javascript">
var fo = new SWFObject("viewer.swf", "viewer", "100%", "100%", "7", "#181818");
fo.addVariable("preloaderColor", "0xffffff");
fo.addVariable("xmlDataPath", "photos/[EEN_ALBUM_NUMMER].xml");
fo.write("flashcontent");
</script>

Het SWFObject wordt aangemaakt middels het SWFObject script.

🃏 TCG Codex - Je volledige TCG verzameling in je broekzak ::: 🍏 TCG Codex for iOS ::: 🤖 TCG Codex for Android


Acties:
  • 0 Henk 'm!

  • TheBorg
  • Registratie: November 2002
  • Laatst online: 23-09 17:18

TheBorg

Resistance is futile.

TheBorg schreef op vrijdag 31 oktober 2008 @ 13:56:
Insert alleen de flash object/embed code en niet het hele version detectie SWFObject verhaal.

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 22-09 16:31

Bosmonster

*zucht*

En als je dan toch bezig bent, pak dan gelijk de laatste versie van swfObject: http://code.google.com/p/swfobject/

Blijft wel gelden natuurlijk, zoals TheBorg al aangeeft, dat je de javascript (of flash-replacement) na het laden van de content uit moet voeren.

[ Voor 68% gewijzigd door Bosmonster op 31-10-2008 14:39 ]


Acties:
  • 0 Henk 'm!

  • Ypho
  • Registratie: April 2008
  • Nu online

Ypho

Allround Nerd

Topicstarter
Heb ik gedaan, en het werkt. Super bedankt allemaal.

Topic kan op slot ;)

🃏 TCG Codex - Je volledige TCG verzameling in je broekzak ::: 🍏 TCG Codex for iOS ::: 🤖 TCG Codex for Android


Acties:
  • 0 Henk 'm!

Verwijderd

Afgezien van de correctheid van je code vind ik het ook niet zo'n goed idee om je navigatie zo aan te sturen, omdat je Back/Forward knoppen helemaal onbruikbaar worden. Erg lastig om dus snel door je pagina heen te vliegen :)

Acties:
  • 0 Henk 'm!

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 19:30

killercow

eth0

Ypho schreef op vrijdag 31 oktober 2008 @ 13:53:
[...]

Vwb het page=xx argument, hier kan in principe niets anders worden ingeladen dan de pagina's die vooraf in een array staan waar op gecontroleerd wordt, maar dit kan jij niet weten natuurlijk.

Over het javascript heb je wel gelijk, maar is het niet verstandig om voor mobile telefoons een lichte versie te maken, zonder te grote afbeeldingen, lagere resolutie etc. Dit was namelijk wel mijn idee.
Wat betreft je array, dat is inderdaad de manier, maar dat was niet jouw implementatie, ajax.php?page=ajax gaf namenlijk een nette error die aangaf dat je database functie 2 maal geïnitieerd werd.

Afbeeldingen die niet content zijn horen gewoon in je stylesheet, en daar is dan weer prima een mobiele versie aan te serveren met inderdaad lichtere en minder images. Afbeeldingen die wel content zijn is wat lastiger, ik zou niet weten of ik een 3MB foto wil ontvangen op m'n telefoon, maar een 500k plaat is afhankelijk van de gebruiker misschien nog wel nuttig, waar een ander wellicht maar 10k wil spenderen.

openkat.nl al gezien?


Acties:
  • 0 Henk 'm!

  • Ypho
  • Registratie: April 2008
  • Nu online

Ypho

Allround Nerd

Topicstarter
killercow schreef op vrijdag 31 oktober 2008 @ 14:53:
[...]


Wat betreft je array, dat is inderdaad de manier, maar dat was niet jouw implementatie, ajax.php?page=ajax gaf namenlijk een nette error die aangaf dat je database functie 2 maal geïnitieerd werd.
Klopt, dit is de oude versie, nieuwe versie staat niet online. Ik zal de argumenten in dit topic zeker meenemen.

🃏 TCG Codex - Je volledige TCG verzameling in je broekzak ::: 🍏 TCG Codex for iOS ::: 🤖 TCG Codex for Android

Pagina: 1