javascript verstoort mijn site

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3 volgende »

Erwin H

Erwin H

20/02/2012 16:10:29
Quote Anchor link
Wat je kan doen is al in de views.php code de juiste class meegeven aan de views.php link, zodat als er op geklikt wordt alleen die target div wordt gevuld.

<li><a class="laad_pagina" href="views.php">Bekijken</a></li>

Waar je alleen wel weer voor moet zorgen is dat dan views.php dus niet meer de hele pagina verstuurt, maar alleen de inhoud voor het div.

P.S. Ik zie dat er nog een dubbele quote ontbreekt voor laad_pagina:
<li><a class=laad_pagina" href="vrienden.php">Wijzigen</a></li>
 
PHP hulp

PHP hulp

12/01/2025 00:48:58
 
Kurtik watson

kurtik watson

20/02/2012 17:27:50
Quote Anchor link
Beste, ik heb dit geprobeerd maar toch wordt de volledige pagina geladen. Ik heb de class laad_pagina meegegeven. Ik zie niet hoe ik hier de pagina kan beperken tot het div target..wanneer ik terug van vrienden naar views.php ga. Kan je dit even nakijken?

Mijn views.php is nu:

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
<!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>

<link rel="stylesheet" type="text/css" href="css1/scroll.css" />
 
<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>

    <ul id="thicktabs">
<li><a class="laad_pagina" 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/lounge4.jpg"></div>
</body>
</html>


Mvg,
Kurt
 
Erwin H

Erwin H

20/02/2012 18:19:51
Quote Anchor link
Even voor mij begrip. Ik zie dat je in dit stuk code geen onderscheid maakt tussen hele pagina, of een deel versturen naar de browser. Daar komen we wel uit.
Wat ik alleen eerst even wil weten is of de pagina ook helemaal ververst wordt, of dat het inladen in de target div wel werkt? Dus als je nu in views.php op de link voor views.php klikt, krijg je dan de volledige pagina in het target div te zien?
 
Kurtik watson

kurtik watson

21/02/2012 13:36:50
Quote Anchor link
Hallo Erwin,

Bedankt voor heel de moeite.

Als ik op de link "views" klik zie ik de pagina dubbel onder elkaar, uitgezonderd de target div die zie ik maar 1 keer onderaan. Dus de afbeelding in <div id="target"><img src="afbeeldingen/lounge4.jpg"></div> zie ik maar 1 keer en de rest verschijnt twee keer.


mvg,
Kurt
 
Erwin H

Erwin H

21/02/2012 14:16:16
Quote Anchor link
Dan is het probleem dus simpelweg dat je in views.php de hele pagina verstuurt naar de browser en niet alleen de content voor de target div. Waar ik je dus de hele tijd al op heb geprobeerd te attenderen.

Dit kan je op twee manieren oplossen. Ofwel checken in views.php of de request wordt gemaakt via een AJAX call (zie de code daarvoor op de vorige pagina), of geef een parameter mee in de link zodat je die in views.php kan checken en op basis daarvan bepaalt of alles moet worden verstuurd of niet (zie ook daarvoor de vorige pagina).
 
Kurtik watson

kurtik watson

22/02/2012 00:29:58
Quote Anchor link
ok maar als ik van views.php naar vrienden.php gaat werkt wel alles mooi, en enkel de div wordt geladen. Als ik op vrienden.php klik in de browser zie je de hele pagina gelijk het moet en als op de link vrienden.php geklikt wordt vanuit views.php dan wordt enkel de div geladen. Snap het niet meer helemaal, zal eens testen wat je hierboven zei en er een if in verwerken:

if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {

}
else {
}

mvg,
Kurt
 
Kurtik watson

kurtik watson

23/02/2012 13:19:42
Quote Anchor link
Hallo Erwin,

Het werkt nu van views naar vrienden en omgekeerd! :-) Thanks!! Zoveel sneller nu..

Alleen heb ik nog het probleem met url en title. Indien het niet mogelijk is dat de url van views naar vrienden.php veranderd, is het misschien mogelijk dat een id in de url komt met $_SESSION bijvoorbeeld en dan geef ik de pagina's een standaardnaam "home". Dan krijg je: home.php?id=vrienden en home.php?id=views.

Is het mogelijk dat deze id variabel wordt? Ik heb even met sessie geprobeerd maar dit lukte me niet.

mvg,
Kurt
 
Erwin H

Erwin H

23/02/2012 14:55:45
Quote Anchor link
Wat betreft die link aanpassen is natuurlijk geen enkel probleem. Je kan in plaats van deze links:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<li><a class="laad_pagina" href="views.php">Bekijken</a></li>
<li><a class="laad_pagina" href="vrienden.php">Wijzigen</a></li>

deze gebruiken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<li><a class="laad_pagina" href="home.phpid=views">Bekijken</a></li>
<li><a class="laad_pagina" href="home.php?id=vrienden">Wijzigen</a></li>

En dan ben je er al. Uiteraard wel zorgen dat home.php die request juist kan afhandelen, maar dat spreekt voor zich.

Dit lijkt ook wel op de manier die ik meestal met AJAX calls gebruik. Een pagina verzorgt de afhandeling van meerdere request, welk request wordt bepaald door een "action" parameter in danwel GET danwel POST parameters. Zo heb je niet een aparte php pagina nodig voor elke verschillende optie.

Alleen begrijp ik niet helemaal wat je nu met sessies wilt bereiken. In principe gebruik je sessies om data op te slaan tussen server calls, dus dat je kan onthouden wie de gebruiker was bijvoorbeeld. In dit geval begrijp ik niet welke data je dan denkt nodig te hebben.
Gewijzigd op 23/02/2012 14:57:29 door Erwin H
 
Kurtik watson

kurtik watson

23/02/2012 17:29:48
Quote Anchor link
Ik ga dit straks testen maar ik dacht dat als je van views naar vrienden.php gaat met ajax de home.php?id=views blijft staan terwijl je op de vrienden.php pagina komt, en dit in de browser id=vrienden zou moeten worden; Anders sta je op de vriendenpagina en zie je home.php?id=views staan wat niet klopt..

groeten
 
Erwin H

Erwin H

23/02/2012 17:42:36
Quote Anchor link
De url in de browser verandert op geen enkel moment. Wat ik zou doen is een soort startpagina maken die een user gewoon kan aanroepen als www.blabla.nl/home.php.
Binnen die pagina heb je dan linkjes zoals hierboven (dus bv home.php?id=vrienden) waarbij de content van die pagina in je target div wordt geladen. Echter, die url's zal de gebruiker dus nooit zien. Hij zal al die tijd, hoe vaak hij ook heen en weer gaat, alleen die www.blabla.nl/home.php zien.
Gewijzigd op 23/02/2012 17:42:59 door Erwin H
 
Kurtik watson

kurtik watson

23/02/2012 18:59:19
Quote Anchor link
ok, en ook in de title kan niks uniek (paginanaam) gezet worden? Dan kan ik enkel de naam van de site in de title zetten en is het beetje spijtig dat je niks kan toevoegen (views, vrienden of iets) Dit is anders het enige gebrek aan dit ajax-systeem..

Ik vond deze link en misschien kan je daar iets mee:

http://ajaxpatterns.org/Unique_URLs
 
Erwin H

Erwin H

23/02/2012 19:18:14
Quote Anchor link
De URL aanpassen heb ik nog nooit geprobeerd, maar als je die link bekijkt dan lijkt het mogelijk te zijn.... veel succes :-)

De titel van je pagina aanpassen kan wel redelijk makkelijk in Javascript:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
document.title = "The new title goes here.";


Als je een beetje rondkijkt op internet dan vind je veel redenen om het niet te doen, maar het kan wel, dus de keuze is aan jou.
 
Kurtik watson

kurtik watson

23/02/2012 19:35:32
Quote Anchor link
ja op facebook zie je ook dat de url gewijzigd wordt door een id mee te geven..

http://www.facebook.com/profile.php?id=100000982982525&sk=photos

groeten
 
Erwin H

Erwin H

23/02/2012 21:02:37
Quote Anchor link
Volgens mij is dat gewoon het herladen van een pagina door een normale aanroep te doen, of een modrewrite actie, maar niet wat jij wilt.
 
Kurtik watson

kurtik watson

24/02/2012 00:24:04
Quote Anchor link
ok, bedankt voor info.

Dan heb ik nog een laatste vraagje:

Ik heb een pagina "profiel.php" waar de header een achtergrond heeft; als ik naar de pagina "views.php" ga verschijnt die achtergrond nu ook terwijl dit gewoon wit moet zijn. Kan dit verholpen worden?

In de profiel.php heb ik:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
#header {
            <?php
                
                $query
= "SELECT achtergrond, acht, background
                     FROM members,achtergrond WHERE naam='"
. $_SESSION['username'] . "' AND achtergrond = acht  ";
                $result=mysql_query($query);
                $rows=mysql_fetch_array($result); ?>

                background-image:url(<?php echo 'achtergronden/' . $rows['background'] ?>);
                background-color:white;
            }

In de views.php heb ik
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
#header {
background-color:white;
}
Gewijzigd op 24/02/2012 00:25:55 door kurtik watson
 
Erwin H

Erwin H

24/02/2012 09:30:53
Quote Anchor link
Met de JQuery css() functie kan je alle css waardes veranderen. In dit geval zou het zijn:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$("#header").css("background-color":"");

De lege string betekent dat het property wordt verwijderd.
P.S. let even op hier, omdat je een samengesteld property gebruikt zijn er officieel twee manieren in JQuery om dit property te zetten. Zoals ik het hierboven deed, of: css("backgroundColor"). Dus zonder streepje en hoofdletter c. Beide zouden moeten werken, maar ik heb er in het verleden nog wel eens problemen mee gehad. Als de een dus niet werkt kan je ook de andere proberen.
Gewijzigd op 24/02/2012 09:31:26 door Erwin H
 
Kurtik watson

kurtik watson

24/02/2012 11:50:26
Quote Anchor link
ok, ik veronderstel dat dit ook bij Ajax werkt, omdat daar enkel de div wordt geladen..

mvg,
Kurt
 
Erwin H

Erwin H

24/02/2012 11:52:48
Quote Anchor link
Dit heeft niets met Ajax te maken. Het is gewoon JQuery/Javascript, dus of je het nu na een Ajax call of niet aanroept is niet relevant.
 
Kurtik watson

kurtik watson

25/02/2012 11:35:09
Quote Anchor link
Heb het juist geprobeerd maar lukte niet:

Ik heb de jquery css tussen de andere javascripts gezet. Je ziet dus eerst de css normaal en daarna de css jquery. Ik heb de background-color ook vervangen door background-image in de jquery css want het is de background-image die zich niet mag herhalen op de andere pagina.
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
<?php
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
session_start();
?>

<div id="target"><img src="afbeeldingen/lounge4.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>
<style type="text/css">
#header {
            <?php
                include('databas.php');
                $query = "SELECT achtergrond, acht, background
                     FROM yapa_members, yapa_achtergrond WHERE naam='"
. $_SESSION['username'] . "' AND achtergrond = acht  ";
                $result=mysql_query($query);
                $rows=mysql_fetch_array($result); ?>

                background-image:url(<?php echo 'achtergronden/' . $rows['background'] ?>);
                background-color:#FFFFFF;
            }
?>

</style>
<script type="text/javascript">
$("#header").css("background-image":"");
</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>

<ul id="thicktabs">
<li><a class="laad_pagina" href="views.php">Bekijken</a></li>
<li><a class="laad_pagina" href="vrienden.php">vrienden</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/lounge4.jpg"></div>
<a class="laad_pagina" href="vrienden.php">Laad pagina 1</a>
</body>
</html>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
}
?>

Gewijzigd op 25/02/2012 12:01:01 door kurtik watson
 
Erwin H

Erwin H

25/02/2012 12:03:06
Quote Anchor link
Uhm, wat je nu probeert moet je even uitleggen, want ik begrijp niet wat je wil.
(maar, zou "include('databas.php');" niet "include('database.php');" moeten zijn?)
 

Pagina: « vorige 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.