ajax prototype posts in FF

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Koen B

Koen B

22/12/2006 17:53:00
Quote Anchor link
Hey,

Ik ben op mijn site ajax aan het invoeren alleen lukt dat niet echt.
Ik heb het middelscherm waar steeds de verschillende pagina's laden in ajax.
En elke pagina kan dan door ajax ook weer veranderen (ajax in ajax)
Nu heb ik op een paar pagina's forms en die moeten met ajax verstuurd worden en dat doe ik zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
// op de pagina zelf:
<input type="button" name="submit" value="Send" class="buttons" onClick="send('pb', 'middle', 'pb.php?actie=comp')";> // de button om het form te verzenden


// hier onder een javascript functie om prototype aan het werk te zetten
function send(form, div, pagina){
    var params = Form.serialize($(form));
    new Ajax.Updater(div, pagina, {asynchronous:true , evalScripts:true , parameters:params});
}


Nu werkt dit op deze manier goed (in IE) maar het probleem is dat het met firefox niet werkt! En forms met ajax in AJAX versturen kan wel! Maar wat doe ik dan fout?
 
PHP hulp

PHP hulp

18/12/2024 03:03:33
 
PHP Newbie

PHP Newbie

22/12/2006 17:55:00
Quote Anchor link
Je moet ajax niet voor navigatie van een site gebruiken. In dat geval zijn frames nog beter.

Je kunt ajax beter gebruiken om je site te verfraaien, maar het is eigenlijk bedoeld voor webapplicaties.
 
Koen B

Koen B

22/12/2006 17:59:00
Quote Anchor link
Maar als ik het toch WEL wil? Wat doe ik dan fout?
 
T H

T H

22/12/2006 18:26:00
Quote Anchor link
Dan moet je uitleggen waarom je het wel wilt zodat we mischien een vergelijkend systeem kunnen maken.

gr, tim
 
Simon Blok

Simon Blok

22/12/2006 18:29:00
Quote Anchor link
Laat je AJAX functie eens zien!

@phpnewbie:
Ik ben het er mee eens dat je AJAX niet voor navigatie moet gebruiken, maar wat bedoel je met dat 'verfraaien'? Daar snap ik helemaal niets van.
Edit:

Zijn probleem is het versturen van een formulier via AJAX en dat is iets heel normaals. Het gaat dus helemaal niet over de navigatie.
Gewijzigd op 01/01/1970 01:00:00 door Simon Blok
 
Koen B

Koen B

22/12/2006 19:11:00
Quote Anchor link
Het zijn misschien wel problemen met de navigatie omdat het door de navigatie ajax in ajax is.

En over ajax als navigatie gebruiken: In veel tutorials word gmail als goed voorbeeld gegeven van ajax, daar gebruiken ze ajax toch echt als navigatie ...

Maar zullen we even ontopic blijven? Ik zal kijken of ik mijn probleem even wat beter kan opschrijven:

De pagina waarin het form staat: (dus staat door navigatie al in ajax)
ik heb hem verkort tot alleen de dingen die van belang kunnen zijn ...
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
header('Content-Type: text/javascript'); // om javascript te laten werken omdat hij al door ajax is geladen ...
<form name="pb">
//het hier nog allerlei code .... (waaronder een textarea die 'bericht' heet)
<input type="button" name="submit" value="Send" class="buttons" onClick="send('pb', 'middle', 'pb.php?actie=comp')";>


Dan op de php pagina waar de ajax naar toe gaat:
(ook weer verkort)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
if($_POST['submit'] || isset($_POST['bericht'])){
// hier bericht verwerken ....
}


En als laatste een javascript functie die prototype laat werken, deze functie word aangeroepen door om de button te klikken (zie onClick hierboven)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
function send(form, div, pagina){
    var params = Form.serialize($(form));
    new Ajax.Updater(div, pagina, {asynchronous:true , evalScripts:true , parameters:params});
}


Wat gaat er fout:

In IE gaat er niks fout, als ik op de button klik stuurt hij de gegevens gewoon op, en ze worden goed verwerkt zoals ik wil!
In FF gaat het niet goed! Als ik dan op de button klik gebeurd er gewoon niks.
 
Jelmer -

Jelmer -

22/12/2006 19:11:00
Quote Anchor link
SAIMEN: heel simpel, browsers zonder javascript (overbeveiligde, oude, kleine, simpele en geautomatiseerde browsers dus ook Google bot) kunnen je site niet meer doorbladeren. Gevolg: je bent slecht bereikbaar en niet vindbaar in de zoekmachines. Verder zijn de simpele dingen zoals bookmarken en deeplinken onmogelijk, wat weer ten koste gaat van de gebruiksvriendelijkheid, en daarmee van je aantal tevreden gebruikers.

Voor al deze dingen zijn wel oplossingen en work-arounds te vinden, maar over moeilijk doen gesproken...

Oftewel: wat zijn de voordelen van navigatie & laden via Javascript? Ik zie de voordelen nog niet opwegen tegen de nadelen. Webapps als Gmail of een ander desktop-vervangend programma zijn een ander verhaal. Maar hier hoeven ook geen pagina's geladen te worden, alleen data. En in het geval van Koen gebeurt dit niet, want anders zou hij geen Javascript via zijn XMLHTTPRequest hoeven te verwerken...

Maar weer even naar het probleem van de topic-starter: Geeft je Firefox Console ook nog een melding? (onder het menu 'extra')
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
 
Simon Blok

Simon Blok

22/12/2006 19:15:00
Quote Anchor link
@Jelmer, ik zeg ook dat ik AJAX liever NIET voor navigatie gebruik

@koen: Ik mis de echte AJAX-functie, waar het ActiveX-object wordt aangemaakt. Zo kan ik niet zien of je wel de juiste data meegeeft aan de server.
 
Koen B

Koen B

22/12/2006 19:18:00
Quote Anchor link
@jelmer: nope

@SAIMEN:
de ajax functie zit in prototype ...
Dat is een tool waarmee je ajax kan gebruiken, alleen ga ik die niet posten want die ik 29 kb :p

Dit is de site:
http://prototype.conio.net/
Gewijzigd op 01/01/1970 01:00:00 door Koen B
 
Simon Blok

Simon Blok

22/12/2006 19:23:00
Quote Anchor link
OK, ja ik zie net ook dat je het over Prototype hebt, my bad! Die AJAX functie zit wel goed dan ;-).
 
Jelmer -

Jelmer -

22/12/2006 19:23:00
Quote Anchor link
* Jelmer moet leren lezen! :@ *

Okee, tijd voor een debug-sessie:
- Zet boven de functie eens een alert() met wat tekst, om te kijken of de functie wel gedeclareerd wordt.
- Zet binnen de functie (1e regel binnen de functie) een alert() om te kijken of hij wordt aangeroepen.
- Zet eentje aan het einde van de functie (net voor } ) om te kijken of hij niet binnen de functie ergens afkapt.

En post je bevindingen hier :)
 
Koen B

Koen B

22/12/2006 19:23:00
Quote Anchor link
Misschien is een voorbeeld handig:

klik
Inloggen kan met:
naam: kebion
code: kebion

Als je dan op de link 'bank' klikt is er een voorbeeld die zou moeten werken.
Deze werkt dus wel in IE maar niet in FF

:edit:

met deze code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
alert('1 boven/buiten de functie');
function send(form, div, pagina){
  alert('2 boven/in de functie');
    var params = Form.serialize($(form));
    new Ajax.Updater(div, pagina, {asynchronous:true , evalScripts:true , parameters:params});
    alert('3 onder de functie');
}

Met IE zie ik ze alle 3
Met FF zie ik de eerste niet eens! Ook niet na vernieuwen, of in een nieuw venster openen.
Gebruikt FF een .js file uit de cashe ofzo?
Gewijzigd op 01/01/1970 01:00:00 door Koen B
 
Koen B

Koen B

22/12/2006 19:46:00
Quote Anchor link
Ik gebruik ook deze code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
function info() {
    window.setTimeout( "info()", 30000);
    getHTML('stats.php','info','get');
    alert('4 info');
}

window.setTimeout( "info()", 5000);

In IE doet dit het ook, in FF doet deze functie het WEL maar hij geeft geen alert...

:edit:
en in error ding van FF staat nog steeds niks dat hiermee te maken heeft ...
Gewijzigd op 01/01/1970 01:00:00 door Koen B
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.