javascript verstoort mijn site

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 volgende »

Kurtik watson

kurtik watson

18/02/2012 23:31:17
Quote Anchor link
Beste,

Ik heb een chat en imagescroller op mijn pagina. Maar als ik nu op de menubalk klik laad het even en wordt de pagina even wit waarna hij hij naar de juiste pagina gaat. Is dit te verhelpen zodat de menubalk en alle afbeeldingen blijven staan en de pagina dus niet even wit wordt?

mvg,
Kurt
Gewijzigd op 18/02/2012 23:31:56 door Kurtik watson
 
PHP hulp

PHP hulp

05/11/2024 15:42:13
 
Roel -

Roel -

19/02/2012 00:21:08
Quote Anchor link
Wat je wilt, is dus eigenlijk dat je pagina niet vernieuwt als je een andere pagina opent?
 
Kurtik watson

kurtik watson

19/02/2012 09:40:48
Quote Anchor link
Zoiets ja,als je op een andere link klikt op de menubalk heb je natuurlijk een andere pagina, maar eerst verschijnt even een witte scherm, en dit zou niet mogen..Indien iemand mij dit kan fixen wil ik er wel een vergoeding voor geven hoor.

groeten
Gewijzigd op 19/02/2012 09:41:22 door kurtik watson
 
Erwin H

Erwin H

19/02/2012 09:55:10
Quote Anchor link
Je kan het oplossen met Ajax. Wat je dan in feite doet is niet de hele pagina laden, maar alleen die delen die moeten veranderen. Je moet dan echter wel bedenken dat de gebruiker in feite de hele tijd op dezelfde pagina blijft. Het komt een beetje neer op het gebruik van frames.... maar dan zonder frames.
 
Kurtik watson

kurtik watson

19/02/2012 10:33:22
Quote Anchor link
ok, ik weet niet hoe ik dat in elkaar krijg, als mijn menubalk, achtergrond en chat bleven staan was al super. Indien je dit wilt maken tegen een vergoeding, zou me heel vooruit helpen..

mvg,
Kurt
 
Erwin H

Erwin H

19/02/2012 11:03:51
Quote Anchor link
Nou ja, de basis is niet zo moeilijk, zeker niet als je JQuery gebruikt.

Even om het simpel te houden. Stel je hebt de volgende pagina:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<html>
<head>
<!-- plaats jquery library hier etc -->
</head>
<body>
<div id="target"></div>

<a class="laad_pagina" href="pagina1.php">Laad pagina 1</a>
<a class="laad_pagina" href="pagina2.php">Laad pagina 2</a>

</body>
</html>


Als je nu op link 1 of link2 klikt dan zouden die betreffende pagina's in de div "target" geladen moeten worden. Met Jquery is dat een 'piece of cake':
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
$('body').on('click','.laad_pagina',function(e){
  e.stopPropagation();
  $('#target').load($(this).attr('href'), function() {
    alert('Load was performed.'); //heeft verder geen nut, alleen om te laten zien dat het werkt
  });
});

Wat er gebeurt is dat als een link met class "laad_pagina" wordt geklikt dat de href van die link (de url dus) zal worden geladen in het div met id "target". In jouw geval zou dat dus het deel van de pagina moeten zijn dat je wil veranderen, al het andere (menu, header, footer, etc) buiten die div blijft dus gewoon staan.
That's it :-)

Paar opmerkingen:
- als je geen JQuery gebruikt is dit misschien nog een beetje abracadabra, maar daar komen we wel uit.
- de pagina's die je laadt moeten dus wel alleen de content voor de target div bevatten en geen header, footer en menu meer, anders krijg je dat twee keer te zien.
 
Kurtik watson

kurtik watson

19/02/2012 13:29:39
Quote Anchor link
Hey Erwin,

Ziet er erg logisch uit, bedankt alvast! Ik heb in mijn code al:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>

Dit moet het zijn he, dan zal ik al eens testen!
Kurt
Gewijzigd op 19/02/2012 13:36:08 door kurtik watson
 
Erwin H

Erwin H

19/02/2012 13:47:20
Quote Anchor link
Alleen de on() functie die ik gebruik werkt pas vanaf JQuery versie 1.7. Je zou dus die link moeten vervangen door http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js
Gewijzigd op 19/02/2012 13:47:38 door Erwin H
 
Kurtik watson

kurtik watson

19/02/2012 14:50:16
Quote Anchor link
En waar moet de code hieronder komen: ik had dit onder de code van twee laad pagina's gezet. Of moet ik het includen in een js bestand?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$('body').on('click','.laad_pagina',function(e){
  e.stopPropagation();
  $('#target').load($(this).attr('href'), function() {
    alert('Load was performed.'); //heeft verder geen nut, alleen om te laten zien dat het werkt
  });
});

?>
 
Erwin H

Erwin H

19/02/2012 15:03:25
Quote Anchor link
Je kan het gewoon in de head van je document zetten (tussen < script > tags, of in een apart js bestand (mijn voorkeur). Overigens is het wel handig om het nog binnen de $(document).ready() te zetten:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
$(document).ready(function(){
  $('body').on('click','.laad_pagina',function(e){
    e.stopPropagation();
    $('#target').load($(this).attr('href'), function() {
      alert('Load was performed.'); //heeft verder geen nut, alleen om te laten zien dat het werkt
    });
  });
});
 
Kurtik watson

kurtik watson

19/02/2012 15:27:32
Quote Anchor link
Werkt bij mij niet,ik zal iets fout doen

Je kan eens zien op:

http://www.cocoonplace.com/eng/index050.php en dan op link van laadpagina1 klikken..De foto onder de menubalk laad opnieuw..

mvg
Gewijzigd op 19/02/2012 15:31:33 door kurtik watson
 
Erwin H

Erwin H

19/02/2012 15:33:44
Quote Anchor link
Komt omdat je de JQuery library niet laadt. Die moet dus nog wel in je document opgenomen worden.
 
Kurtik watson

kurtik watson

19/02/2012 15:41:49
Quote Anchor link
ok,

Maar ik heb het toch geincluded? Onderstaand script staat in de oorspronkelijke pagina en pagina1.php..

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
 
Erwin H

Erwin H

19/02/2012 15:45:34
Quote Anchor link
Maar te laat. Op het moment dat de browser als eerste de regel "$(document).ready()" etc tegenkomt is JQuery nog niet geladen (dat komt pas veel later in je pagina) en dus denkt de browser "dat $ teken ken ik niet" en gooit het in feite weg.
Dus of plaats die JQuery link erboven, of dat nieuwe stukje script onder de JQuery link.
 
Kurtik watson

kurtik watson

19/02/2012 15:52:16
Quote Anchor link
ok, nu staat het goed en heb ervan gemaakt:

<script>
$(document).ready(function(){
$('body').on('click','.laad_pagina',function(e){
e.stopPropagation();

});
});
</script>

Maar foto blijft zich herladen :-( Zie je nog een fout?

mvg
Gewijzigd op 19/02/2012 15:52:42 door kurtik watson
 
Erwin H

Erwin H

19/02/2012 16:03:13
Quote Anchor link
Ja... je moet natuurlijk niet het belangrijkste deel weghalen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$('#target').load($(this).attr('href'), function() {
    alert('Load was performed.'); //heeft verder geen nut, alleen om te laten zien dat het werkt
});

Alleen die alert kan weg (dat is niet nodig) maar dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$('#target').load($(this).attr('href'));

is wel nodig. Anders laat je die pagina alsnog niet in het target div.
Overigens heb ik ook het idee dat dat e.stopPropagation niet zo goed werkt. Zou je ook kunnen vervangen door e.preventDefault() mocht het nog niet goed gaan.
 
Kurtik watson

kurtik watson

19/02/2012 17:47:19
Quote Anchor link
Hallo Erwin,

Dit werkt!!! Thanks!

Ik heb nog alleen enkele vraagjes:

1 Hoe kan ik de title en bepaalde css aanpassen? Als ik naar bijvoorbeeld pagina1.php klik, gaat hij wel daarnaartoe maar zie ik als title en in de url de oorspronkelijke pagina (bijvoorbeeld pagina0.php) staan.
2 Als ik naar die pagina1.php klik, hoe kan ik vandaaruit dan terug naar mijn oorspronkelijke pagina (pagina0) gaan zonder dat de pagina terug beweegt (wit scherm)?

groeten
 
Erwin H

Erwin H

19/02/2012 18:06:46
Quote Anchor link
1. Dat kan niet. De title kan je misschien nog wel aanpassen, maar de url zeker niet.
2. Dat kan op dezelfde manier als waarop je naar pagina1 gaat. Dus in pagina1 heb je een link met de class "laad_pagina" die verwijst naar pagina0. Alleen moet je zorgen dat je dan dus niet alles laadt van pagina0, maar alleen de content voor de target div. Wat je het beste kan doen is in je pagina0.php een check inbouwen om te zien of het een ajax call is of niet. Ik gebruik daarvoor de volgende check:

if ( !(isset($_SERVER["HTTP_X_REQUESTED_WITH"])) || !(strtolower($_SERVER["HTTP_X_REQUESTED_WITH"]) === "xmlhttprequest"))

Als het een ajax call is dan moet je dus niet de hele pagina echoen naar de browser, maar alleen die delen die in het target div moeten komen.
 
Kurtik watson

kurtik watson

19/02/2012 18:50:20
Quote Anchor link
Beste,

Dit lukt me niet. Die pagina1 bevat uiteindelijk enkel gegevens van de body he. Hoe kan ik dan volgende code erin verwerken:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$('body').on('click','.laad_pagina',function(e){
e.preventDefault();
$('#target5').load($(this).attr('href'), function() {

});
});
});
</script>

Is het ook niet mogelijk dat er een $_GET in de url meekomt, dan kan de url zo gespecifieerd worden?

mvg,
Kurt
Gewijzigd op 19/02/2012 19:04:25 door kurtik watson
 
Erwin H

Erwin H

19/02/2012 19:29:18
Quote Anchor link
Even voor de duidelijkheid. Je hebt een "basis pagina". Ik weet niet welke pagina dat is, maar dat is de pagina die de gebruiker daarwerkelijk oproept, waarin de header staat, de URL die hij in zijn browser ziet etc.
In die "basis pagina" moet ook het stukje javascript komen dat regelt dat er een pagina in het target div geladen wordt.

Daarna, in elke pagina die je oproept om in het target div te komen kan je links plaatsen die als class hebben "laad_pagina". Al die links zullen dan het stukje javascript coden triggeren dat ik je gegeven hebt en zal erdus voor zorgen dat die pagina in het target div geladen wordt. Zo kan je dus in pagina1 een link hebben naar pagina2 en in pagina2 weer een link terug naar pagina1. Als je er elke keer maar voor zorgt dat alleen de HTML verzonden wordt die in het target div moet komen en dus niet alle menu's etc eromheen.

Op dat laatst punt, ja, je kan uiteraard ook gewoon GET parameters meegeven. Vanuit mijn originele post genomen zou je bijvoorbeeld dit kunnen doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<a class="laad_pagina" href="pagina1.php?laad=ajax">Laad pagina 1</a>

En dan in pagina1 kijk je of die laad parameter is gegeven en ajax als waarde heeft, zo ja dan verstuur je alleen de inhoud voor target div.
 
Kurtik watson

kurtik watson

20/02/2012 15:48:34
Quote Anchor link
Beste,

De basispagina is views.php en de link gaat naar vrienden.php. Dit werkt heel mooi, alleen terug van vrienden naar views laad hij opnieuw de hele pagina. Kan je dit nog eens nakijken? Enkel <div id="target"><img src="afbeeldingen/koppelgroen.jpg"></div> wordt ingeladen als ik op link vrienden klik. Ik zie niet hoe ik nu terug kan gaan naar views zonder dat de volledige pagina van views laad.

De code van vrienden.php is:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {

?>


<div id="target"><img src="afbeeldingen/koppelgroen.jpg"></div>
<?php }
else {
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it">
<head>
<?php session_start(); ?>
<title>bekijken</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
  $('body').on('click','.laad_pagina',function(e){
    e.preventDefault();
    $('#target').load($(this).attr('href'), function() {
    
    });
  });
});
</script>

</head>
<body>
    <div id='left'>
        <a href='' title='Balletto'><img src='imgs1/pre1.jpg' /></a>
        <img src='imgs1/pre2.jpg' title='Pesca' />
    </div>
<?php


    
<ul>
<
li><a href="views.php">Bekijken</a></li>
<
li><a class=laad_pagina" href="vrienden.php">Wijzigen</a></li>
<li><a href="
bekijken3.php">Bekijken</a></li>
<li><a href="
wijzigen.php">Wijzigen</a></li>
<li><a href="
upload4.php">Uploaden</a></li>
</ul>
    ?>
    <div id="
target"><img src="afbeeldingen/koppelgroen.jpg"></div>

<a class="
laad_pagina" href="pagina1.php?id=pagina1">Laad pagina 1</a>

<
/body>
<
/html>

[
code]<?php
}
?>
Gewijzigd op 20/02/2012 15:55:35 door kurtik watson
 

Pagina: 1 2 3 volgende »



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.