abonnement Unibet Coolblue Bitvavo
pi_47589085
Okay, dan weet ik dat het nuttig is om verder te zoeken
Heb je nog een hint waar ik naar moet zoeken?
pi_47589094
Ah, dankje, CraZaay!
pi_47589659
http://www.buyshit.nl/keygen/

Hier staat alles dat je nodig hebt
pi_47590724
Cool!
Kan je hiermee ook nog verder gaan zodat je een stuk tekst op de pagina kan veranderen, en ook plaatjes. Hmm, hoe leg je dat uit

Tekst 1 met plaatje 1, 2, 3
Tekst 2 met plaatje 4, 5, 6

dat idee?
pi_47590968
1
2
3
4
5
<p id="tekstveld">Doei!</p>

<script>
document.getElementById('tekstveld').innerHTML = "Hoi!";
</script>


innerHTML is het magische woord :)
  zaterdag 24 maart 2007 @ 14:04:49 #107
12880 CraZaay
prettig gestoord
pi_47609852
Of DOM scripting, maar da's voor nu misschien te hoog gegrepen

En als je verschillende teksten hebt met per tekst verschillende plaatjes zou ik ze in een multidimensionale array zetten.
pi_47609901
Pff, heb even wat rond zitten zoeken, en denk dat ik toch maar op zoek ga naar een hoster die ook php/sql heeft.
  zaterdag 24 maart 2007 @ 23:00:03 #109
12880 CraZaay
prettig gestoord
pi_47626967
Want dan denk je een betere user experience te bieden door de pagina steeds te herladen?
pi_47627037
quote:
Op zaterdag 24 maart 2007 23:00 schreef CraZaay het volgende:
Want dan denk je een betere user experience te bieden door de pagina steeds te herladen?
PHP-gegenereerd AJAX met SQL backend natuurlijk .
"If you are depressed you shouldn't be in C major!" - Rick Beato
pi_47627579
quote:
Op zaterdag 24 maart 2007 23:00 schreef CraZaay het volgende:
Want dan denk je een betere user experience te bieden door de pagina steeds te herladen?
Nee, dan denk ik in een kortere tijd een beter werkende pagina te maken. Javascript biedt zeker voordelen, maar het is (met mijn kennis) erg lastig als het snel af moet. Als ik tijd heb ga ik er wel eens naar kijken, voorlopig even niet. Jullie zien me nog terug hier!
  maandag 26 maart 2007 @ 13:28:11 #112
12880 CraZaay
prettig gestoord
pi_47670125
quote:
Op zaterdag 24 maart 2007 23:01 schreef Litpho het volgende:

[..]

PHP-gegenereerd AJAX met SQL backend natuurlijk .
Ik gebruik nog zelden PHP, maar zit dat er voortaan native in ja?
pi_47670237
quote:
Op maandag 26 maart 2007 13:28 schreef CraZaay het volgende:

[..]

Ik gebruik nog zelden PHP, maar zit dat er voortaan native in ja?
Geen idee. Ik gebruik absoluut géén PHP, maar je hebt uiteraard niet noodzakelijk een framework nodig om AJAX te implementeren, je loopt alleen zonder het risico dat het na verloop van tijd enigszins onoverzichtelijk wordt.
"If you are depressed you shouldn't be in C major!" - Rick Beato
pi_47736856
Op het moment verander ik plaatjes dynamisch met image.src = "bla.jpg". Gaat prima, maar ik wil het plaatje dan maximaal 100 breed hebben. image.width = 100 werkt prima, hij scaled het mooi mee, maar bij het volgende plaatje kloppen de verhoudingen niet meer.

Iemand misschien pointers voor mijn probleem? Thx

[ Bericht 63% gewijzigd door Geqxon op 28-03-2007 03:55:42 ]
pi_47739161
In Firefox heb je de naturalWidth en naturalHeight properties waarmee je de goede hoogte kan berekenen. In IE kan je even een nieuwe img maken en daar de width en height van opvragen om de echte afmetingen te achterhalen.

Zie de scaleImage functie van FOK:)
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_47739697
quote:
Op woensdag 28 maart 2007 09:41 schreef SuperRembo het volgende:
In Firefox heb je de naturalWidth en naturalHeight properties waarmee je de goede hoogte kan berekenen. In IE kan je even een nieuwe img maken en daar de width en height van opvragen om de echte afmetingen te achterhalen.

Zie de scaleImage functie van FOK:)
Een copy/paste van mijn huidige situatie:

1
2
3
image.style.display = "none";
image.src = null;
image.src = "http://www.server.com/"+directory+"/"+imageurl+".jpg";


En op de onload van dit plaatje:

1
2
3
thumb.style.display = "inline";         
thumb.width = thumb.width / (thumb.height/100);;
thumb.height = 100;


Het nadeel is dat hij ondanks mijn src = null nog steeds de afmetingen van het vorige plaatje onthoudt, waardoor de hoogte/breedte verhouding niet meer klopt. Ik duik even de fok resizer in
pi_47751502
Wat ik inmiddels opgelost heb door de complete inhoud van mijn div aan te passen via innerHTML. Grove manier, maar het werkt vele malen beter zo.
  zaterdag 31 maart 2007 @ 20:54:59 #118
74523 BaggerUser
ModderFokker!
pi_47870451
halo heb een raar probleempje :)

ik heb een stukje html:
1select name='product' id='eenheid'></select>


een javascript funtie:
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
function updatepulldownEenheid(str)

if (str.length > 0)

var url="ajax/updatepulldownEenheid.php?sid=" + Math.random() + "&id=" + str
xmlHttp=GetXmlHttpObject(pulldownEenheidChanged)
xmlHttp.open("GET", url , true)
xmlHttp.send(null)

else






function pulldownEenheidChanged() 

 if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
 { 
//  document.getElementById("txtHint").innerHTML=xmlHttp.responseText; 
   hulp = xmlHttp.responseText; 
   hulp = hulp.substring(0,1);
   //alert(hulp);
   if (hulp == '#')
   {
      //alert(hulp);

      document.getElementById("eenheid").innerHTML = ' ';
   }
   else
   {
      document.getElementById("eenheid").innerHTML = xmlHttp.responseText;
      

   }
 } 


dit is wat updatepulldownEenheid.php terug geeft:
1       $html .= "<option value="1">Big/Mac;


in firefox werkt het maar in ie laat hij "eenheid" leeg

iemand enig idee wat hier de oorzaak van is ?
De enige echte BaggerUser!
Riemen
fiets kopen
pi_47870741
Wat zou er precies moeten gebeuren?

Ik zou iig door php een JSON object/array terug geven en daarmee in javascript de benodigde options in de select toevoegen.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_47871981
Precies zoals superrembo het zegt!
Stukje om een selectfield te vullen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 var selectfield = document.getElementById(select); 


  // clear down the dropdown before adding new entries into it.
    selectfield.options.length = 1;
    j=0;
   for (var i=0; i < data.length; i++)
   {
      if (data[i] == 'RETURN')
      {
      return true;
      }
      selectfield.options[j] = new Option(data[i], data[i]);
     j++;
   }
  zaterdag 31 maart 2007 @ 23:24:35 #121
62215 qu63
..de tijd drinkt..
pi_47876119
Stukje HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<form action="javascript:get(document.getElementById('myform'),1);" name="myform1" id="myform1">
<textarea id="mytextarea11">my test
1
2
3
</textarea>
<textarea id="mytextarea12">my test2
4
5
6</textarea>
<br>
<input type="button" name="button" value="Submit" 
   onclick="javascript:get(this.parentNode,1);">
</form>
<br><br>
Server-Response:<br>
<hr>
<span name="myspan1" id="myspan1">hoi?</span>


Werkende JavaScript:
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
55
56
57
58
59
60
61
62
63
   var http_request = false;
   function makePOSTRequest(url, parameters, nr) {
      http_request = false;
      if (window.XMLHttpRequest) { // Mozilla, Safari,...
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) {
            // set type accordingly to anticipated content type
            //http_request.overrideMimeType('text/xml');
            http_request.overrideMimeType('text/html');
         }
      } else if (window.ActiveXObject) { // IE
         try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
      if (!http_request) {
         alert('Cannot create XMLHTTP instance');
         return false;
      }
      
      http_request.onreadystatechange = alertContents;
      http_request.open('POST', url, true);
      http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      http_request.setRequestHeader("Content-length", parameters.length);
      http_request.setRequestHeader("Connection", "close");
      http_request.send(parameters);
   }

   function alertContents() {
      if (http_request.readyState == 4) {
         if (http_request.status == 200) {
            //alert(http_request.responseText);
            result = http_request.responseText;
            document.getElementById("myspan1").innerHTML = result + "<input type="button" name="close" value="sluiten" onClick="sluit(1)">";  
//         alert("myspan"+nr+"");
         } else {
            alert('There was a problem with the request.');
         }
      }
     if (http_request.readyState == 1) {
        document.getElementById("myspan1").innerHTML = "<img src='img.gif'>"
     }
     if (http_request.readyState == 2) {
        document.getElementById("myspan1").innerHTML = "<img src='img.gif'>"
     }
     if (http_request.readyState == 3) {
        document.getElementById("myspan1").innerHTML = "<img src='img.gif'>"
     }
   }
   
   function get(obj, nr) {
      var poststr = "mytextarea"+nr+"1=" + encodeURI( document.getElementById("mytextarea"+nr+"1").value ) +
                    "&mytextarea"+nr+"2=" + encodeURI( document.getElementById("mytextarea"+nr+"2").value );
      makePOSTRequest('update2.php', poststr, nr);
   }
  
  function sluit(nr) {
     document.getElementById("myspan"+nr).innerHTML = "";
   }



Niet werkende JavaScript:
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
55
56
57
58
59
60
61
62
63
var http_request = false;
   function makePOSTRequest(url, parameters, nr) {
      http_request = false;
      if (window.XMLHttpRequest) { // Mozilla, Safari,...
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) {
            // set type accordingly to anticipated content type
            //http_request.overrideMimeType('text/xml');
            http_request.overrideMimeType('text/html');
         }
      } else if (window.ActiveXObject) { // IE
         try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
      if (!http_request) {
         alert('Cannot create XMLHTTP instance');
         return false;
      }
      
      http_request.onreadystatechange = alertContents(nr);
      http_request.open('POST', url, true);
      http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      http_request.setRequestHeader("Content-length", parameters.length);
      http_request.setRequestHeader("Connection", "close");
      http_request.send(parameters);
   }

   function alertContents(nr) {
      if (http_request.readyState == 4) {
         if (http_request.status == 200) {
            //alert(http_request.responseText);
            result = http_request.responseText;
            document.getElementById("myspan"+nr+"").innerHTML = result + "<input type="button" name="close" value="sluiten" onClick="sluit("+nr+")">";  
//         alert("myspan"+nr+"");
         } else {
            alert('There was a problem with the request.');
         }
      }
     if (http_request.readyState == 1) {
        document.getElementById("myspan"+nr+"").innerHTML = "<img src='img.gif'>"
     }
     if (http_request.readyState == 2) {
        document.getElementById("myspan"+nr+"").innerHTML = "<img src='img.gif'>"
     }
     if (http_request.readyState == 3) {
        document.getElementById("myspan"+nr+"").innerHTML = "<img src='img.gif'>"
     }
   }
   
   function get(obj, nr) {
      var poststr = "mytextarea"+nr+"1=" + encodeURI( document.getElementById("mytextarea"+nr+"1").value ) +
                    "&mytextarea"+nr+"2=" + encodeURI( document.getElementById("mytextarea"+nr+"2").value );
      makePOSTRequest('update2.php', poststr, nr);
   }
  
  function sluit(nr) {
     document.getElementById("myspan"+nr).innerHTML = "";
   }


enige wijzigingen zitten in de regeles 24, 33, 38, 45 ,47 en 51..

iemand tips? :)
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  zondag 1 april 2007 @ 10:41:21 #122
3677 SuperRembo
Sinds 1998
pi_47885282
onreadystatechange moet een functie zijn die uitgevoer kan worden als de readystate van de request veranderd. In de oude versie is het inderdaad een functie, in de nieuwe versie wordt de functie alertContents meteen uitgevoerd en het resultaat (null/undefinded) wordt aan onreadystatechange toegekend.

Extra parameters doorgeven kan met behulp van een closure:
1
2
3
http_request.onreadystatechange = function() {
   alertContents(nr);
}



Als je toch alle gegevens via javascript wil ophalen en de form submit niet gebruikt, dan kan je beter de hele form tag weg laten.
In een onclick attribuut hoort javascript te staan, dus "javascript:" is daar overbodig.
Ik zou de sluit-knop gewoon in je html zetten. Standaard is ie verborgen, alleen als je 'm nodig hebt maak je 'm zichtbaar. Dat werkt een stuk makkelijker dan in javascript een hele button in innerHTML zetten. Hetzelfde geldt voor het 'busy' plaatje.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  zondag 1 april 2007 @ 15:13:46 #123
62215 qu63
..de tijd drinkt..
pi_47893011
quote:
Op zondag 1 april 2007 10:41 schreef SuperRembo het volgende:
onreadystatechange moet een functie zijn die uitgevoer kan worden als de readystate van de request veranderd. In de oude versie is het inderdaad een functie, in de nieuwe versie wordt de functie alertContents meteen uitgevoerd en het resultaat (null/undefinded) wordt aan onreadystatechange toegekend.

Extra parameters doorgeven kan met behulp van een closure:

[ code verwijderd ]
check! :)
quote:
Als je toch alle gegevens via javascript wil ophalen en de form submit niet gebruikt, dan kan je beter de hele form tag weg laten.
hoe bedoel je dat? Het is de bedoeling dat er meerdere 'forms' komen (zoals dit dus-->)
HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<form action="javascript:get(document.getElementById('myform'),1);" name="myform1" id="myform1">
<input id="mytextarea11" value="my test">
<input id="mytextarea12" value="my test">
<input type="button" name="button" value="Submit" 
   onclick="javascript:get(this.parentNode,1);">
</form>
<div id="myspan1"></div>
meteen wat tekst?
<form action="javascript:get(document.getElementById('myform'),2);" name="myform2" id="myform2">
<input id="mytextarea21" value="my test">
<input id="mytextarea22" value="my test">
<input type="button" name="button" value="Submit" 
   onclick="javascript:get(this.parentNode,2);">
</form>
<div id="myspan2"></div>
meteen wat tekst?
quote:
In een onclick attribuut hoort javascript te staan, dus "javascript:" is daar overbodig.
Ik zou de sluit-knop gewoon in je html zetten. Standaard is ie verborgen, alleen als je 'm nodig hebt maak je 'm zichtbaar. Dat werkt een stuk makkelijker dan in javascript een hele button in innerHTML zetten. Hetzelfde geldt voor het 'busy' plaatje.
je bedoelt dmv style="display:none"?
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  zondag 1 april 2007 @ 15:59:58 #124
3677 SuperRembo
Sinds 1998
pi_47894751
quote:
Op zondag 1 april 2007 15:13 schreef qu63 het volgende:
hoe bedoel je dat? Het is de bedoeling dat er meerdere 'forms' komen (zoals dit dus-->)
HTML
De action van het form doet hetzelfde als de onclick van de submit button. Ik vraag me af of die action überhaupt uitgevoerd wordt.
quote:
je bedoelt dmv style="display:none"?
Ja.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  zondag 1 april 2007 @ 16:25:05 #125
62215 qu63
..de tijd drinkt..
pi_47895533
quote:
Op zondag 1 april 2007 15:59 schreef SuperRembo het volgende:

[..]

De action van het form doet hetzelfde als de onclick van de submit button. Ik vraag me af of die action überhaupt uitgevoerd wordt.
wordt idd niet uitgevoerd..
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  zondag 1 april 2007 @ 19:13:19 #126
104583 cyberstalker
Een krachtig neen!
pi_47900191
quote:
Op zondag 1 april 2007 16:25 schreef qu63 het volgende:

[..]

wordt idd niet uitgevoerd..
Maar is wel nodig voor de validatie van je document. Als dat je uberhaupt iets uitmaakt.
Hope for the best, prepare for the worst.
pi_47966646
stel voor je hebt tables met bepaalde eigenschappen nodig. en je verzamelt ze in een array.
dan wordt de verwijzing naar het element opgeslagen toch?

wat ik wil doen is het volgende:
- het origineel kopiëren en bewaren in de array, dmv cloneNode (om later terug te zetten)
- de eigenschappen van het origineel wijzigen (dmv de verwijzing? ook in de array)

en nu:
als je het origineel wijzigt en later terugzet/vervangt dmv replaceChild, klopt de verwijzing niet meer.
hier raak ik het een beetje kwijt en lukt het niet. geeft replaceChild een nieuwe verwijzing terug?

zijn er voorbeelden van backup, change en restore in JavaScript?
  dinsdag 3 april 2007 @ 16:37:37 #128
12880 CraZaay
prettig gestoord
pi_47968673
Ook al heb ik nooit zoiets gedaan, het lijkt me dat replaceChild inderdaad een nieuwe verwijzing geeft. Je verwijderd namelijk een element en zet op die plaats een nieuw element neer. De verwijzing die je hebt heeft dan dus nog betrekking op het verwijderde element, dus daar heb je niets meer aan.

Of begrijp ik je verkeerd? Post anders wat relevante code.
pi_47969053
klopt wel wat je zegt. en zo had ik het ook gedaan.
maar het gaat nog steeds fout: de zogenaamd nieuwe verwijzing klopt niet.
dus bekijk ik nu de specificaties. en zie hier wat raars:
Replaces the child node oldChild with newChild in the list of children, and returns the oldChild node.
bron: www.w3.org
daar heb ik wat aan .

ik ga nog maar 'ns brainstormen...
pi_47970390
dat werkte dus niet. nu heb ik het vervangen door insertbefore, removechild en nextsibling.
en nu werkt het wel. opgelost.
pi_48174186
Ik heb een monitorings programma met als output een website.

Ik wil deze website standaard open hebben op een computer zodat de status altijd te zien is. Echter, voor deze pagina moet worden ingelogd, en ik wil het vol automatisch is. Ook zou ik graag twee verschillende pagina's om en om op vragen.

Mijn vraag; hoe kan dit? Ik zat te denken om het systeem in een i-frame te knallen en via JS steeds de pagina's af te wisselen, kan dit?

Op vrijdag 12 augustus 2005 01:46 schreef ElisaB het volgende:
Wat is SHERMAN leuk he Bloes O+
pi_48175908
cross-site scripting is gevaarlijk en in FF sterk beveiligd.
ik weet niet hoe dat in IE is. als je FF gebruikt kan je een extensie maken, heb je alle controle.
pi_48176372
Het gaat waarschijnlijk IE worden, maar het is dus niet zo simpel als dat dat ik dacht?
Op vrijdag 12 augustus 2005 01:46 schreef ElisaB het volgende:
Wat is SHERMAN leuk he Bloes O+
pi_48177051
Op wat voor manier moet er ingelogd worden? Een username / password veld op een pagina oid?
pi_48177450
quote:
Op dinsdag 10 april 2007 14:36 schreef Geqxon het volgende:
Op wat voor manier moet er ingelogd worden? Een username / password veld op een pagina oid?
Jup. Ik zat te denken om zelf handmatig in te loggen, en dan die JS te laten runnen, door het steeds opvragen van de pagina's zouden er ook geen session time-outs moeten komen volgens mij..
Op vrijdag 12 augustus 2005 01:46 schreef ElisaB het volgende:
Wat is SHERMAN leuk he Bloes O+
  dinsdag 10 april 2007 @ 15:39:28 #136
104583 cyberstalker
Een krachtig neen!
pi_48179493
Waarom zou je het met een iframe willen doen? Kun je niet gewoon in die pagina om de zoveel minuten een (AJAX) requestje doen en daarmee het geheel updaten? Lijkt me veel netter.

Anders kun je altijd nog het document zelf verversen.
Hope for the best, prepare for the worst.
pi_48180612
Omdat ik slechts een beperkte HTML/javascript kennis heb en mij dit het makkelijkste leek..
Op vrijdag 12 augustus 2005 01:46 schreef ElisaB het volgende:
Wat is SHERMAN leuk he Bloes O+
pi_48218226
Een zeer kort vraagje:

1imageobject.style.display = "inline";   


Werkt onder Safari en Firefox prima, onder IE niet. Het plaatje is gegenereerd als:

1<img src="" onload="functie(this)" style="display: none">


Hoe ga ik dit onder Internet Explorer werkend krijgen?
pi_48219020
Gevonden. Het is mijn image-resizer, die bij een display = "none" onder IE bij de waarde imageobject.width doodleuk 0 aangeeft.
pi_48533509
Ik heb een javascript functie welke een andere functie aanroept.
functie 2 haalt via AJAX een aantal waarden op en zou die moeten returnen naar functie 1.
functie 1 moet vervolgens die values in een innerHMTL zetten:

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
<?php
// functie 1
function getpageBody(name) {
    
http.open("GET"urlpageBody escape(name), true);
    
http.onreadystatechange = function() {
    if (
http.readyState == 4) {
    
results http.responseText;
        if(
results!=''){
             
document.getElementById('PageVersion').innerHTML=getVersions(name); // dit gaat dus blijkbaar fout
        
}else{
             
document.getElementById('PageVersion').innerHTML=' ';
        }
    }
}
    
http.send(null);
 }

//functie 2
function getVersions(page) {
    
http.open("GET"urlgetVersions escape(page), true);
    
http.onreadystatechange = function() {
    if (
http.readyState == 4) {
    
results http.responseText;
        if(
results!=''){
             return 
http.responseText;
        }else{
             return(
'leeg');
        }
    }
}
    
http.send(null);
 }
?>

Zodra ik deze functies aanroep/ activeer, geeft mijn element PageVersions 'undefined' te zien.
Als ik in functie 2 de return verander in een document.write laat deze wel degelijk de te verwachten output zien. Maar deze output komt op de een of andere manier niet correct in functie 1 terecht.

Wat doe ik fout?
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
  vrijdag 20 april 2007 @ 11:27:12 #141
104583 cyberstalker
Een krachtig neen!
pi_48533755
quote:
Op vrijdag 20 april 2007 11:20 schreef George.W.Bush het volgende:
Ik heb een javascript functie welke een andere functie aanroept.
functie 2 haalt via AJAX een aantal waarden op en zou die moeten returnen naar functie 1.
functie 1 moet vervolgens die values in een innerHMTL zetten:


[ code verwijderd ]
Zodra ik deze functies aanroep/ activeer, geeft mijn element PageVersions 'undefined' te zien.
Als ik in functie 2 de return verander in een document.write laat deze wel degelijk de te verwachten output zien. Maar deze output komt op de een of andere manier niet correct in functie 1 terecht.

Wat doe ik fout?
Volgens mij begrijp jij het concept van AJAX niet helemaal. De eerste A staat namelijk voor asynchronous. Dit houdt in dat je functie niet gaat zitten wachten op input van de webserver. De hele onreadystate functie wordt pas aangeroepen op het moment dat de webserver iets terugstuurt. Je functie retourneert dus inderdaad nooit iets.

Je zult dus vanuit die functie zelf wat dingen moeten veranderen.
Hope for the best, prepare for the worst.
pi_48534111
quote:
Op vrijdag 20 april 2007 11:27 schreef cyberstalker het volgende:

[..]

Volgens mij begrijp jij het concept van AJAX niet helemaal. De eerste A staat namelijk voor asynchronous. Dit houdt in dat je functie niet gaat zitten wachten op input van de webserver. De hele onreadystate functie wordt pas aangeroepen op het moment dat de webserver iets terugstuurt. Je functie retourneert dus inderdaad nooit iets.

Je zult dus vanuit die functie zelf wat dingen moeten veranderen.
eh nee, die functie retourneert wel degelijk wat. De volgende regel:

1http.open("GET", urlgetVersions + escape(page), true);


is wat helderder als je deze erbij hebt
1var urlgetVersions = "../system/versions.php?page="


Nogmaals, als ik in functie 2 document.write(http.responseText); schrijf ipv return http.responseText; krijg ik gewoon keurig datgene van de webserver te zien wat ik nodig heb en http.responseText heeft dus value, namelijk het resultaat van een query:

1
2
3
4
5
6
7
Versie: 
<select onChange="getpageVersion(this.options[this.selectedIndex].value)">
   <option selected="selected">Huidige versie</option>
   <option value="6">-1</option>
   <option value="2">-2</option>
   <option value="1">-3</option>
</select>


[ Bericht 6% gewijzigd door George.W.Bush op 20-04-2007 11:45:09 ]
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
  vrijdag 20 april 2007 @ 11:44:23 #143
104583 cyberstalker
Een krachtig neen!
pi_48534413
quote:
Op vrijdag 20 april 2007 11:36 schreef George.W.Bush het volgende:

[..]

eh nee, die functie retourneert wel degelijk wat. De volgende regel:


[ code verwijderd ]

is wat helderder als je deze erbij hebt

[ code verwijderd ]

Nogmaals, als ik in functie 2 document.write('http.responseText'); schrijf ipv return http.responseText; krijg ik gewoon keurig datgene van de webserver te zien wat ik nodig heb.
Je snapt het nog steeds niet. Het stuk vanaf de http.onreadystatechange = function() { tot en met de bijbehorende } wordt niet uitgevoerd totdat er een resultaat is. Dit is dus wat er direct wordt uitgevoerd:

1
2
3
4
5
function getVersions(page) 
{
        http.open("GET", urlgetVersions + escape(page), true);
        http.send(null);
}


En natuurlijk werkt een document.write daar. Die wordt dan uitgevoerd op het moment dat er een resultaat is. Op dat moment is jouw functie getVersions al gestopt zonder een returnvalue.
Hope for the best, prepare for the worst.
pi_48534557
quote:
Op vrijdag 20 april 2007 11:44 schreef cyberstalker het volgende:

[..]

Je snapt het nog steeds niet. Het stuk vanaf de http.onreadystatechange = function() { tot en met de bijbehorende } wordt niet uitgevoerd totdat er een resultaat is. Dit is dus wat er direct wordt uitgevoerd:
[ code verwijderd ]

En natuurlijk werkt een document.write daar. Die wordt dan uitgevoerd op het moment dat er een resultaat is. Op dat moment is jouw functie getVersions al gestopt zonder een returnvalue.
Die document.write wordt toch op hetzelfde moment uitgevoerd als die return. Die return vind pas plaats bij de onreadstate
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
  vrijdag 20 april 2007 @ 11:51:31 #145
104583 cyberstalker
Een krachtig neen!
pi_48534672
quote:
Op vrijdag 20 april 2007 11:48 schreef George.W.Bush het volgende:

[..]

Die document.write wordt toch op hetzelfde moment uitgevoerd als die return. Die return vind pas plaats bij de onreadstate
Klopt inderdaad. Verschil is alleen dat op het moment van die onreadystatechange de functie getVersions allang gestopt is. Die gaat daar niet op zitten wachten. Dat is het hele idee van dat asynchronous. Jij denkt in lineaire code en daar ga je de mist in.
Hope for the best, prepare for the worst.
pi_48534821
quote:
Op vrijdag 20 april 2007 11:51 schreef cyberstalker het volgende:

[..]

Klopt inderdaad. Verschil is alleen dat op het moment van die onreadystatechange de functie getVersions allang gestopt is. Die gaat daar niet op zitten wachten. Dat is het hele idee van dat asynchronous. Jij denkt in lineaire code en daar ga je de mist in.
Je bedoelt dat functie een al gestopt is?
Je zegt nu functie 2.
Maar functie 2 returned wel, maar dan is functie 1 al klaar bedoel je?

1document.getElementById('PageVersion').innerHTML=getVersions(name);

die PageVersion element blijft leeg, want op het moment van aanroepen is getVerions(name) nog leeg....
Dat bedoel je?
Als ik dan in functie 1 een var maak die gevuld wordt met getVersions en die var in de innerHTML zet zou het wel moeten werken toch?

[ Bericht 15% gewijzigd door George.W.Bush op 20-04-2007 12:01:00 ]
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
pi_48536413
fuck, ook met een timertje ingebouwd werkt het niet.

1
2
var version=getVersions(name);
setTimeout("document.getElementById('PageVersion').innerHTML="+version+"",1000);


iemand nog een idee hoe ik functie 1 kan laten wachten op de results van functie 2?

[ Bericht 45% gewijzigd door George.W.Bush op 20-04-2007 12:51:34 ]
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
pi_48537958
Opgelost, functie 2 in functie 1 geintegreerd
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
  vrijdag 20 april 2007 @ 13:29:47 #149
104583 cyberstalker
Een krachtig neen!
pi_48538043
quote:
Op vrijdag 20 april 2007 12:44 schreef George.W.Bush het volgende:
fuck, ook met een timertje ingebouwd werkt het niet.


[ code verwijderd ]

iemand nog een idee hoe ik functie 1 kan laten wachten op de results van functie 2?
Je begrijpt het zo te zien nog steeds niet. Omdat ik niet het idee heb dat ik het je zo uit kan leggen dat je het zelf begrijpt heb ik hier een voorbeeldje dat zou moeten werken (niet getest):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function getpageBody(name)
{
   http.open("GET", urlpageBody + escape(name), true);
   http.onreadystatechange = function()
   {
      if (http.readyState == 4)
      {
         results = http.responseText;
         if(results!='')
         {
            document.getElementById('PageVersion').innerHTML=results;
         }
         else
         {
            document.getElementById('PageVersion').innerHTML=' ';
         }
      }
   }
   http.send(null);
}


Sowieso is het vreemd dat je in zowel functie 1 als functie 2 een http request doet.
Hope for the best, prepare for the worst.
pi_48539530
quote:
Op vrijdag 20 april 2007 13:29 schreef cyberstalker het volgende:

[..]

Je begrijpt het zo te zien nog steeds niet. Omdat ik niet het idee heb dat ik het je zo uit kan leggen dat je het zelf begrijpt heb ik hier een voorbeeldje dat zou moeten werken (niet getest):
[ code verwijderd ]
Zie de post boven je, ik heb iets soortgelijks gedaan. Ik begreep je wel, maar wist even niet hoe het op te lossen. Door inderdaad beide functie's in 1 functie te integreren is het probleem opgelost.
quote:
Sowieso is het vreemd dat je in zowel functie 1 als functie 2 een http request doet.
Dat valt wel mee volgens mij. http request 1 trekt de inhoud van een gekozen pagina uit de pagina tabel en plaatst die in mijn fckeditor (getPageBody). In deze funtie heb ik nu getVersions geintegreerd die via een xmlhttprequest een andere query uitvoert die uit de versie tabel het aantal versies van de gekozen pagina haalt en deze toont.

Nu kan ik van de gekozen pagina een eerdere versie kiezen, waarbij, wederom met een xmlhttprequest de body van deze oudere versie uit de versie tabel wordt gehaald en in de fckeditor wordt geplaatst (getpageVersion).

Nu kan ik dus in een cms omgeving pagina's opvragen en vervolgens versies van die pagina's opvragen zonder refresh. Vooral omdat het anders een 3 traps serverside raket zou worden vond ik dit eenvoudiger
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
pi_48546120
quote:
Op vrijdag 20 april 2007 14:07 schreef George.W.Bush het volgende:
Dat valt wel mee volgens mij. http request 1 trekt de inhoud van een gekozen pagina uit de pagina tabel en plaatst die in mijn fckeditor (getPageBody). In deze funtie heb ik nu getVersions geintegreerd die via een xmlhttprequest een andere query uitvoert die uit de versie tabel het aantal versies van de gekozen pagina haalt en deze toont.
Maar waarom haal je niet in 1 request de pagina EN de bijbehorende versieinformatie tegelijk op?
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_48547296
quote:
Op vrijdag 20 april 2007 17:12 schreef SuperRembo het volgende:

[..]

Maar waarom haal je niet in 1 request de pagina EN de bijbehorende versieinformatie tegelijk op?
Ik bedacht me later dat dat zou kunnen, maar ik zie niet zo zeer de toegevoegde waarde van een join in mijn query tov 2 xmlhttprequest om de code aan te passen, of zie ik wat over het hoofd?
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
pi_48549832
Ik zeg niet dat je een join in je query moet stoppen, ik zeg alleen dat je waarschijnlijk beter die resultaten in 1 httprequest kunt versturen. Dat is sneller, belast de server minder en is makkelijker in javascript.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_48610865
quote:
Op vrijdag 20 april 2007 19:26 schreef SuperRembo het volgende:
Ik zeg niet dat je een join in je query moet stoppen, ik zeg alleen dat je waarschijnlijk beter die resultaten in 1 httprequest kunt versturen. Dat is sneller, belast de server minder en is makkelijker in javascript.
Dat bedoelde ik dus. Is 1 'moeilijkere' query sneller dan twee html requests met 2 maal een simpele select?

Die javascript heb ik nu al, hoewel dit voor toekomstige aanpassingen inderdaad vragen om problemen is
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
  zondag 22 april 2007 @ 20:24:18 #155
12880 CraZaay
prettig gestoord
pi_48611096
quote:
Op zondag 22 april 2007 20:17 schreef George.W.Bush het volgende:

[..]

Dat bedoelde ik dus. Is 1 'moeilijkere' query sneller dan twee html requests met 2 maal een simpele select?

Die javascript heb ik nu al, hoewel dit voor toekomstige aanpassingen inderdaad vragen om problemen is
Het is natuurlijk niet zo dat er een 1-op-1 relatie is in het aantal requests en het aantal queries: je kunt met 1 httprequest prima zorgen dat je server side 2 queries uitvoert.
pi_48611932
quote:
Op zondag 22 april 2007 20:24 schreef CraZaay het volgende:

[..]

Het is natuurlijk niet zo dat er een 1-op-1 relatie is in het aantal requests en het aantal queries: je kunt met 1 httprequest prima zorgen dat je server side 2 queries uitvoert.
Uiteraard de serverside kant kan natuurlijk van alles uitvoeren, het ging me nu om deze specifieke situatie.
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
  zondag 22 april 2007 @ 23:31:00 #157
12880 CraZaay
prettig gestoord
pi_48618022
quote:
Op zondag 22 april 2007 20:46 schreef George.W.Bush het volgende:

[..]

Uiteraard de serverside kant kan natuurlijk van alles uitvoeren, het ging me nu om deze specifieke situatie.
Waarom kun je in deze specifieke situatie dan niet met 1 httprequest zowel de inhoud van de pagina als de beschikbare versies ophalen? Of zie ik iets over het hoofd?
pi_48618670
quote:
Op zondag 22 april 2007 23:31 schreef CraZaay het volgende:

[..]

Waarom kun je in deze specifieke situatie dan niet met 1 httprequest zowel de inhoud van de pagina als de beschikbare versies ophalen? Of zie ik iets over het hoofd?
Dat kan ook Ik stel alleen een tegenvraag... maak het zoveel uit of ik 2 httprequest uitvoer ipv een moeilijke(re) query?

Uiteraard is de javascript moeilijker, maar die heb ik al. Ik heb nu 2 simpele select queries, als ik 'm ombouw naar 1 http request moet ik een join in m'n query bouwen. Mijn serverside script wordt dan zwaarder.

Heeft het performance wijs zin om het te doen, los van het feit dat de clientside scripting eenvoudiger zal worden en dus in de toekomst eenvoudiger aan te passen

Ik bedenk me nu ook... hoe haal ik meerdere gegevens over? Ik echo nu het result van mijn query, die ik dan clientside in de http.responseText heb staan. Maar als ik serverside verschillende gegevns heb... hoe doe ik dat dan?
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
pi_48619318
Nogmaals, je hoeft geen join in je query te stoppen. Je kunt nog steeds die 2 simpele query's uitvoeren. De meeste snelheidswinst haal je doordat je browser niet 2x verbinding met de server hoeft te maken. (En als het een beveiligde pagina is waarvoor je ingelogd moet zijn hoef je maar 1x de sessie te controleren.)

Het is so wie so handig om te weten hoe je meerdere gegevens tegelijk te sturen. De X van ajax staat voor XML; je zou dus XML kunnen gebruiken, maar het werken met XML in javascript (en in PHP) is omslachtig. JSON (zie http://json.org) werkt veel makkelijker. Je stuurt met php bijvoorbeeld

1   echo "{body:'Dit is de <em>body</em>', version:'3.14.15'}"

In javascript doe je weer een eval() van die tekst:

1
2
3
4
5
request.onreadystatechange = function() {
   var reponseData = eval(request.responseText);
   document.getElementById('PageBody').innerHTML = reponseData.body;
   document.getElementById('PageVersion').innerHTML = reponseData.version;
}


Makkelijk uit te breiden, duidelijk leesbaar en snel
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_48622131
quote:
Op maandag 23 april 2007 00:25 schreef SuperRembo het volgende:
Nogmaals, je hoeft geen join in je query te stoppen. Je kunt nog steeds die 2 simpele query's uitvoeren. De meeste snelheidswinst haal je doordat je browser niet 2x verbinding met de server hoeft te maken. (En als het een beveiligde pagina is waarvoor je ingelogd moet zijn hoef je maar 1x de sessie te controleren.)

Het is so wie so handig om te weten hoe je meerdere gegevens tegelijk te sturen. De X van ajax staat voor XML; je zou dus XML kunnen gebruiken, maar het werken met XML in javascript (en in PHP) is omslachtig. JSON (zie http://json.org) werkt veel makkelijker. Je stuurt met php bijvoorbeeld
[ code verwijderd ]

In javascript doe je weer een eval() van die tekst:
[ code verwijderd ]

Makkelijk uit te breiden, duidelijk leesbaar en snel
Hee, interessant! Ik ga dat JSon verder door lezen, ik neem aan dat ik er wat scripts voor op de server moet zetten?
quote:
JSON is a subset of the object literal notation of JavaScript. Since JSON is a subset of JavaScript, it can be used in the language with no muss or fuss.
Dus geen 'extra' scripts en dergelijke nodig, Out of the box?
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
pi_48622266
quote:
Op maandag 23 april 2007 08:28 schreef George.W.Bush het volgende:
Dus geen 'extra' scripts en dergelijke nodig, Out of the box?
PHP heeft vanaf versie 5.2 json_encode() en json_decode(). Om json in javascript te decoden kun je eval() gebruiken. De andere kant op gaat iets minder eenvoudig, maar daar zijn makkelijk scripts voor te vinden (bijv. op json.org). Json encoden in javascript heb je eigenlijk niet zo vaak nodig, alleen als je vanuit js (veel) gegevens terug wil posten naar de server.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_48622729
quote:
Op maandag 23 april 2007 08:40 schreef SuperRembo het volgende:

[..]

PHP heeft vanaf versie 5.2 json_encode() en json_decode(). Om json in javascript te decoden kun je eval() gebruiken.
Maar als ik zoals jij hierboven op die manier echo'ed dan kan ik het ook dmv van var reponseData = eval(request.responseText); 'opdelen'? Daarvoor hoef ik geen extra scripts te installeren?
quote:
De andere kant op gaat iets minder eenvoudig, maar daar zijn makkelijk scripts voor te vinden (bijv. op json.org). Json encoden in javascript heb je eigenlijk niet zo vaak nodig, alleen als je vanuit js (veel) gegevens terug wil posten naar de server.
Dat is inderdaad voor mij op dit moment niet van toepassing. Ik stuur een GET request naar de server
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
pi_48622830
Ik heb een probleem met het uitvoeren van Javascripts. Ik heb een vers geïnstalleerde Windows XP computer, met IE6. IE wil echter geen JS uitvoeren. Bij de beveiligingsinstellingen staat alles wat met Javascrips te maken heeft ingeschakeld, dus daar zou het hem niet in moeten zitten.

Iemand enig idee waar dit aan ligt?

[ Bericht 0% gewijzigd door geertp op 23-04-2007 12:31:48 (tikfoutje) ]
Soaves ne vent, smurges absent.
pi_48624473
quote:
Op maandag 23 april 2007 09:17 schreef geertp het volgende:
Bij de beveiligingsinstellingen staat alles wat met Java te maken heeft ingeschakeld, dus daar zou het hem niet in moeten zitten.
Gegeven het feit dat Java niets te maken heeft met Javascript, zou deze opmerking niet meer waarheid kunnen bevatten als je je best zou doen .
"If you are depressed you shouldn't be in C major!" - Rick Beato
pi_48624655
quote:
Op maandag 23 april 2007 10:23 schreef Litpho het volgende:

[..]

Gegeven het feit dat Java niets te maken heeft met Javascript, zou deze opmerking niet meer waarheid kunnen bevatten als je je best zou doen .
Ik denk dat hij ook even goed moet kijken naar wat hij precies wel en niet aangevinkt heeft
pi_48628473
ik bedoelde inderdaad alles wat met javascripts te maken heeft staat ingeschakeld.
Soaves ne vent, smurges absent.
  maandag 23 april 2007 @ 14:55:24 #167
12880 CraZaay
prettig gestoord
pi_48633326
quote:
Op zondag 22 april 2007 23:55 schreef George.W.Bush het volgende:

[..]

Dat kan ook Ik stel alleen een tegenvraag... maak het zoveel uit of ik 2 httprequest uitvoer ipv een moeilijke(re) query?
Wat SuperRembo hierboven al zegt: wat let je om twee simpele queries uit te voeren als reactie op 1 request?
  maandag 23 april 2007 @ 14:57:37 #168
12880 CraZaay
prettig gestoord
pi_48633425
quote:
Op maandag 23 april 2007 08:40 schreef SuperRembo het volgende:

[..]

PHP heeft vanaf versie 5.2 json_encode() en json_decode().
Daarnaast kun je het (bijvoorbeeld voor oudere PHP-versies) ook gewoon als string doen zoals in SuperRembo's voorbeeld.
pi_48636992
Of je plakt je twee serverside scripts iets nauwkeuriger bij elkaar Swets.

Hij gaat alleen over z'n nek van een enkele quote in mijn body tekst. En ik krijg een 'invalid label' net na versions echo "{body:'test', versions:'test'}";

[ Bericht 26% gewijzigd door George.W.Bush op 23-04-2007 17:04:33 ]
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
pi_48642010
Sorry, haakjes vergeten:

1var data = eval("(" + jsonData + ")");
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_48647344
Wat doen die extra haakjes SR ?
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
pi_48649283
Goeie vraag! Alleen weet ik niet of ik zelf wel helemaal begrijp.

De haakjes (de group operator) zorgen er in ieder geval voor dat wat er tussen staat als 1 statement wordt geëvalueerd (zoadat {..} een object wordt) en niet als serie statements (zodat {...} net als een functie-body uitgevoerd wordt).
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  maandag 23 april 2007 @ 21:53:22 #173
104583 cyberstalker
Een krachtig neen!
pi_48649469
quote:
Op maandag 23 april 2007 21:48 schreef SuperRembo het volgende:
Goeie vraag! Alleen weet ik niet of ik zelf wel helemaal begrijp.

De haakjes (de group operator) zorgen er in ieder geval voor dat wat er tussen staat als 1 statement wordt geëvalueerd (zoadat {..} een object wordt) en niet als serie statements (zodat {...} net als een functie-body uitgevoerd wordt).
Nee. Die zorgen ervoor dat het een object is. Een object met waardes die je op naam kunt uitlezen.
Hope for the best, prepare for the worst.
pi_48650940
Nee. Het object is dat stuk tussen van { tot }.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 1.a
var foo = {name: 'Bar', value: 'baz'};
// 1.b
var foo; 
eval("foo = {name: 'Bar', value: 'baz'}");
// 1.c
var foo = eval("({name: 'Bar', value: 'baz'})");

// 2.a
var foo = ['Bar', 'baz'];
// 2.b
var foo; 
eval("foo = ['Bar', 'baz']");
// 2.c
var foo = eval("['Bar', 'baz']");

De vraag is waarom je bij 1.c wel een setje () nodig hebt, en bij het analoge geval 2.c bij een array niet.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  maandag 23 april 2007 @ 22:58:27 #175
104583 cyberstalker
Een krachtig neen!
pi_48651842
quote:
Op maandag 23 april 2007 22:31 schreef SuperRembo het volgende:
Nee. Het object is dat stuk tussen van { tot }.


[ code verwijderd ]
De vraag is waarom je bij 1.c wel een setje () nodig hebt, en bij het analoge geval 2.c bij een array niet.
Dat is omdat de [ ] voor een array staat en { } voor een object. Een gewone array kun je niet als associatieve array gebruiken, een object wel.
Hope for the best, prepare for the worst.
pi_48652617
quote:
Op maandag 23 april 2007 22:58 schreef cyberstalker het volgende:

[..]

Dat is omdat de [ ] voor een array staat en { } voor een object. Een gewone array kun je niet als associatieve array gebruiken, een object wel.
Ja duh! [] staat voor array en {} voor object.

Het probleem is alleen dat {} staat voor een object, maar ook gebruikt wordt voor compound statements als bij if, for en while. Je voegt dus de haakjes toe om aan te geven dat je bij de eval een enkele expressie terug wil krijgen en niet een compound statement wilt uitvoeren.
Maar waar ik dat in de specs terug zou moeten vinden weet ik niet.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  dinsdag 24 april 2007 @ 00:10:50 #177
12880 CraZaay
prettig gestoord
pi_48653928
quote:
Op maandag 23 april 2007 16:28 schreef George.W.Bush het volgende:

Hij gaat alleen over z'n nek van een enkele quote in mijn body tekst.
Escapen?
pi_48659300
quote:
Op dinsdag 24 april 2007 00:10 schreef CraZaay het volgende:

[..]

Escapen?
Ja ik trek de data serverside door htmlentities en rawurlencode, anders gaat het clientside script over z'n nek. En vervolgens decode ik clientside met unescape(responseData.body);

Alleen nu twijfel ik of unescape volgens RFC 1738 werkt. Met mijn testjes gaat het in ieder geval goed.
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
pi_48663557
Belangrijke regel bij escapen/encoden: alleen doen als het nodig is, en gebruik het juiste type!

Dus als je (in php) een tekst in een js-string wil zetten, dan moet je de qoutes escapen met een backslash. Html-encoden is nergens voor nodig (het gaat namelijk niet om html).

Escape() en unescape() in javascript kan je beter niet gebruiken. Wat escape() doet lijkt op urlencode() in php, maar het is net even anders. Je kunt beter encodeURIComponent() gebruiken om parameters voor een url te encoden. (encodeURIComponent bestaat alleen niet in IE5.0, maar da's toch een ouwe k***browser)
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_48670195
quote:
Op dinsdag 24 april 2007 12:37 schreef SuperRembo het volgende:
Belangrijke regel bij escapen/encoden: alleen doen als het nodig is, en gebruik het juiste type!

Dus als je (in php) een tekst in een js-string wil zetten, dan moet je de qoutes escapen met een backslash. Html-encoden is nergens voor nodig (het gaat namelijk niet om html).
Ik heb het met 'addslashes' geprobeerd, maar dan kreeg ik ook een foutmelding.
Het gaat wel om HTML, de inhoud van de var komt rechtstreeks in een innerhtml terecht . Of bedoel je dat niet?
quote:
Escape() en unescape() in javascript kan je beter niet gebruiken. Wat escape() doet lijkt op urlencode() in php, maar het is net even anders. Je kunt beter encodeURIComponent() gebruiken om parameters voor een url te encoden. (encodeURIComponent bestaat alleen niet in IE5.0, maar da's toch een ouwe k***browser)
Maar het gaat erom dat het in php encode wordt en dat ik het in javascipt moet decoden.
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
  dinsdag 24 april 2007 @ 23:48:42 #181
12880 CraZaay
prettig gestoord
pi_48689421
quote:
Op dinsdag 24 april 2007 15:34 schreef George.W.Bush het volgende:

Maar het gaat erom dat het in php encode wordt en dat ik het in javascipt moet decoden.
Addslashes zou voldoende moeten zijn. De rest (HTML-code) kan prima in een JS string afaik.
pi_48693746
quote:
Op dinsdag 24 april 2007 23:48 schreef CraZaay het volgende:

[..]

Addslashes zou voldoende moeten zijn.
Dat was dus niet voldoende, gaf een foutmelding.
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
  woensdag 25 april 2007 @ 08:45:43 #183
104583 cyberstalker
Een krachtig neen!
pi_48694222
quote:
Op dinsdag 24 april 2007 23:48 schreef CraZaay het volgende:

[..]

Addslashes zou voldoende moeten zijn. De rest (HTML-code) kan prima in een JS string afaik.
Onzin. Al eens van enters gehoord?
Hope for the best, prepare for the worst.
  woensdag 25 april 2007 @ 13:10:07 #184
12880 CraZaay
prettig gestoord
pi_48702383
quote:
Op woensdag 25 april 2007 08:45 schreef cyberstalker het volgende:

[..]

Onzin. Al eens van enters gehoord?
Ik ga er vanuit dat zelfs iemand die minime JS kennis heeft dit weet. Dat heeft ook niets met de HTML entities te maken.

En ja, ik heb er ooit van gehoord. Ze betalen me niet voor client side code development omdat ik er nog nooit van gehoord heb.
  woensdag 25 april 2007 @ 13:11:14 #185
12880 CraZaay
prettig gestoord
pi_48702431
quote:
Op woensdag 25 april 2007 08:18 schreef George.W.Bush het volgende:

[..]

Dat was dus niet voldoende, gaf een foutmelding.
En welke is dat dan precies?
pi_48705604
quote:
Op woensdag 25 april 2007 13:11 schreef CraZaay het volgende:

[..]

En welke is dat dan precies?
1
2
3
4
5
Fout: unterminated string literal
Bronbestand: http://intranet/includes/functions.js
Regel: 11, Kolom: 7
Broncode:
({body:'<h2><font face=\"Verdana\">Welkom op Test\'s Intranet</font></h2>


1
2
3
4
5
function getpageBody(name) {
    http.open("GET", urlpageBody + escape(name), true);
    http.onreadystatechange = function() {
    if (http.readyState == 4) {
        var responseData = eval("("+http.responseText+")"); // hier dus


[ Bericht 16% gewijzigd door George.W.Bush op 25-04-2007 15:07:47 ]
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
  woensdag 25 april 2007 @ 23:26:52 #187
12880 CraZaay
prettig gestoord
pi_48724252
Er zitten geen line breaks in die string en hij wordt ook afgesloten met een enkele quote?

Die dubbele quotes hoef je trouwens niet te escapen.
pi_48732602
quote:
Op woensdag 25 april 2007 23:26 schreef CraZaay het volgende:
Er zitten geen line breaks in die string en hij wordt ook afgesloten met een enkele quote?

Die dubbele quotes hoef je trouwens niet te escapen.
Uiteraard zitten er linebreaks in die string, het is de body van een pagina .
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
pi_48733543
dan heb je daar je probleem gevonden, linebreaks weghalen
  donderdag 26 april 2007 @ 12:50:39 #190
12880 CraZaay
prettig gestoord
pi_48735586
quote:
Op donderdag 26 april 2007 11:28 schreef George.W.Bush het volgende:

[..]

Uiteraard zitten er linebreaks in die string, het is de body van een pagina .
Uiteraard?

Linebreaks zijn geen onderdeel van de HTML ofzo. Dat jij ze er voor de leesbaarheid tussen zet is prima, maar JS gaat er wel van over z'n nek
pi_48737349
quote:
Op donderdag 26 april 2007 12:50 schreef CraZaay het volgende:

[..]

Uiteraard?

Linebreaks zijn geen onderdeel van de HTML ofzo. Dat jij ze er voor de leesbaarheid tussen zet is prima, maar JS gaat er wel van over z'n nek
Er valt weinig aan WYSIWYG editors als FCKeditor te doen die linebreaks uitspugen.
Maar ik zou serverside de linebreaks eruit kunnen filteren natuurlijk
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
pi_48740125
Doen dan! php? nl2br ;-)
Je wilt natuurlijk geen extra 's :-)
pi_48743937
quote:
Op donderdag 26 april 2007 15:06 schreef Darkomen het volgende:
Doen dan! php? nl2br ;-)
Je wilt natuurlijk geen extra 's :-)

En dan moet ik nog een oplossing verzinnen waarmee ik alleen enkele quotes slash, aangezien addslashes enkele quotes, dubbele quotes en slashes slasht.
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
pi_48746364
Zelfde als met de linebreaks
  vrijdag 27 april 2007 @ 00:35:10 #195
12880 CraZaay
prettig gestoord
pi_48760465
1
2
3
4
5
6
7
<?php
// linebreaks weghalen
$string = str_replace(array("\n","\r"),'',$string);

// slashes escapen
$string = str_replace("'","\'",$string);
?>
pi_48788107
Wie helpt mij! .

Ik wil een "add bookmark" script op mijn site maken. Opzich geen probleem met google, maar mijn gewenste script vind ik niet . Ik heb nu een script die het in alle browsers doet, alleen ik wil dat ook bij alle niet-IE-browsers het plaatje zichtbaar wordt wat de link naar de bookmarkfunctie geeft. In bijvoorbeeld FireFox wordt dan de alternatieve tekst en (Ctrl+D) laten zien, maar ik wil gewoon een plaatje zien.

Verder wil ik dat de script automatisch de site toevoegt waarop de site zich bevindt. Dus dat de link uit de adresbalk zeg maar wordt overgenomen.

Dit is het script wat ik nu gebruik, maar geen plaatje, en handmatige linktoevoeging dus .
Achter-elkaar-bezochte-Ajax-thuiswedstrijden-meter: [b]29[/b].
[b]Laatste wedstrijd:[/b] FC Timişoara. [b]Volgende:[/b] ADO Den Haag.
Ray's Statshoekje - 2009/2010.
pi_48789427
dat laatste moet lukken.
maar wat bedoel je met 'plaatje'? en de bedoeling?
pi_48790108
quote:
Op vrijdag 27 april 2007 20:11 schreef SlimShady het volgende:
dat laatste moet lukken.
maar wat bedoel je met 'plaatje'? en de bedoeling?
Dit principe zeg maar:

1<a href="javascript:bookmarksite('title_of_site', 'url_of_site')"><img src="/test.gif" alt="Voeg toe aan favorieten!" </a>


Als je op het plaatje "/test.gif" klikt op de site, voegt het toe in aan favorieten bij IE. Bij andere browsers is er "Voeg toe aan favorieten!" te lezen. Ik wil in alle tijden een plaatje omdat dat mooier in de layout past .
Achter-elkaar-bezochte-Ajax-thuiswedstrijden-meter: [b]29[/b].
[b]Laatste wedstrijd:[/b] FC Timişoara. [b]Volgende:[/b] ADO Den Haag.
Ray's Statshoekje - 2009/2010.
  vrijdag 27 april 2007 @ 20:56:43 #199
104583 cyberstalker
Een krachtig neen!
pi_48790901
quote:
Op vrijdag 27 april 2007 20:30 schreef RayMania het volgende:

[..]

Dit principe zeg maar:


[ code verwijderd ]

Als je op het plaatje "/test.gif" klikt op de site, voegt het toe in aan favorieten bij IE. Bij andere browsers is er "Voeg toe aan favorieten!" te lezen. Ik wil in alle tijden een plaatje omdat dat mooier in de layout past .
Waar staat je site precies?
Hope for the best, prepare for the worst.
pi_48791062
zo zou ik het doen.
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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

   <head>
      <title>RayManiac</title>
   </head>

   <body>

<script type="text/javascript">

/***********************************************
* Bookmark site script- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
***********************************************/

/* Modified to support Opera */
function bookmarksite(title,url){
if (window.sidebar) // firefox
   window.sidebar.addPanel(title, url, "");
else if(window.opera && window.print){ // opera
   var elem = document.createElement('a');
   elem.setAttribute('href',url);
   elem.setAttribute('title',title);
   elem.setAttribute('rel','sidebar');
   elem.click();

else if(document.all)// ie
   window.external.AddFavorite(url, title);
}
</script>

<img src="./test.gif" alt="Voeg toe aan favorieten!" onclick="bookmarksite(window.document.title,window.location.href)" />

   </body>

</html>

alleen het firefox deel werkt hier niet. beveiliging.
en een andere manier kon ik niet vinden.
pi_48791780
Hij doet het. Het kwam door de 'alt-tekst' die ik had toegevoegd aan het plaatje .

Thanks voor de hulp .
Achter-elkaar-bezochte-Ajax-thuiswedstrijden-meter: [b]29[/b].
[b]Laatste wedstrijd:[/b] FC Timişoara. [b]Volgende:[/b] ADO Den Haag.
Ray's Statshoekje - 2009/2010.
  vrijdag 27 april 2007 @ 22:39:10 #202
12880 CraZaay
prettig gestoord
pi_48793570
quote:
Op vrijdag 27 april 2007 20:30 schreef RayMania het volgende:

[..]

Dit principe zeg maar:
[ code verwijderd ]

Als je op het plaatje "/test.gif" klikt op de site, voegt het toe in aan favorieten bij IE. Bij andere browsers is er "Voeg toe aan favorieten!" te lezen. Ik wil in alle tijden een plaatje omdat dat mooier in de layout past .
Zet dan aub wel tekst in de html en laat dat weg en een plaatje zien dmv CSS. En geen pseudo-code maar in de onclick. Is het allemaal accessible en unobtrusive
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')