Avatar billede zetn Nybegynder
17. april 2007 - 23:08 Der er 21 kommentarer

PHP i JavaScript

Hej, hvordan får jeg i følgende php kode: $HTTP_GET_VARS['status']i javascriptet:

objBottomNavCloseLink.setAttribute('href','&action=add_product_HER');
Avatar billede nixir Nybegynder
17. april 2007 - 23:09 #1
Skulle være ret simpelt:

('href','&action=add_product_<?php echo $HTTP_GET_VARS['status']; ?>');
Avatar billede windcape Praktikant
18. april 2007 - 04:48 #2
$HTTP_GET_VARS['status'] er deprecated (forældet) , og har ikke været i bruge i en 3-4 år (siden php3)..

Derimod skal du bruge $_GET , dvs. $_GET['status'] hvis du ønsker at aflæse en GET værdi.

Og ja, det er bare at lave en echo hvor du skal bruge den.
Avatar billede nixir Nybegynder
18. april 2007 - 15:32 #3
windcape ... hvad er forskellen egentlig på print og echo ? hvad bør man bruge hvornår? bare hvis du lige ved det ;)
Avatar billede intenz Novice
18. april 2007 - 18:50 #4
Har læst echo skulle være hurtigere (meget lidt) men du kan læse lidt om det her:
http://www.dvessel.com/node/85
og her:
http://www.bruesoft.com/php_benchmark.php#printecho
Avatar billede windcape Praktikant
18. april 2007 - 22:59 #5
Der er ingen forskel. Du bør bruge hvad der falder dig best i smag.
Avatar billede nixir Nybegynder
19. april 2007 - 14:52 #6
Haha ... Hvad skal jeg tro? Jeg har altid brugt echo, men har tit undret mig over hvad forskellen egentlig er :P
Avatar billede intenz Novice
19. april 2007 - 17:57 #7
Der er forskel. echo udskriver bare, plain and simple. print fungerer som funktion, og man kan tjekke om text er udskrivet (derfor er den lidt tungere, og lidt langsommere) (læs lidt = MEEGET lidt).

Men forskellen er så minimal at det stort set altid vil være ligegyldigt hvilken du bruger.
Avatar billede nixir Nybegynder
19. april 2007 - 22:15 #8
okay ...

En af jer der ved om echo "bremser" scriptet indtil det uploaded til nettet og på vej ned til brugerens pc.

Grunden til jeg spørger, er at det tager længere tid at udskrive echo når jeg kører den over nettet end når jeg kører local host - kan det være rigtigt? Eller er serveren bare langsom?
Avatar billede windcape Praktikant
20. april 2007 - 07:09 #9
bare fordi at serveren / din forbindelse er langsom.
Avatar billede nixir Nybegynder
20. april 2007 - 12:20 #10
okay, så når man benytter echo, og laver benchmark, så regner det også milisekunder'erne med som det tager at sende det til brugeren?
Avatar billede intenz Novice
20. april 2007 - 16:58 #11
Nej, millisekunder det tager at 'execute' koden.

-> bare fordi at serveren / din forbindelse er langsom
Det er jo noget vrøvt. Hvis serveren kører den samme kode med print og echo 1000 gange hver. Og echo er hurtigere hver gang, så har det jo ingenting med 'noget er langsomt' at gøre. Det er fordi koden eksekveres hurtigere!
Avatar billede nixir Nybegynder
22. april 2007 - 19:37 #12
kan du definerer hvad "execute" indeholder ? Også afsendelse fra server til bruger?
Avatar billede intenz Novice
22. april 2007 - 21:13 #13
Nej, hvis det også var afsendelse til bruger ville windscape's argument om forbindelse spille ind. Det er måske der vi har talt forbi hinanden.

Du sætter microtime (http://dk.php.net/microtime) ind før og efter en løkke der kører koden f.eks. 1000 gange.
Derefter kan du udskrive hvor lang tid det tager for serveren at 'execute' (gennemføre) koden.
Avatar billede windcape Praktikant
23. april 2007 - 05:35 #14
eller attatche en profiler :p
Avatar billede intenz Novice
23. april 2007 - 21:05 #15
profiler?
Avatar billede mclemens Nybegynder
23. april 2007 - 22:00 #16
Kig evt. på http://www.eksperten.dk/spm/724039#rid6373520
(lagt som svar hvis det eventuelt kunne bruges)
Avatar billede windcape Praktikant
25. april 2007 - 12:34 #17
mclemens ser lidt besværligt ud.

<script type="text/javascript">
  var request = (<?php echo Zend_Json::encode($_REQUEST); ?>);
</script>
Avatar billede windcape Praktikant
25. april 2007 - 12:35 #18
eller alternativt

<script type="text/javascript">
  var _get  = (<?php echo Zend_Json::encode($_GET); ?>);
  var _post = (<?php echo Zend_Json::encode($_POST); ?>);
</script>
Avatar billede mclemens Nybegynder
25. april 2007 - 12:40 #19
"mclemens ser lidt besværligt ud."
Det tænkte jeg også selv igår
da jeg skulle bruge den...

Jeg skiftede til:
<script type="text/javascript">
var _GET={};
j=window.location.search.substr(1).split("&");
for(i=0;i<j.length;i++){
  k=j[i].split("=");
  _GET[unescape(k[0])]=unescape(k[1]);
}
</script>

... Men det json ser lækkert ud,
hvis man har modulet installeret.
Avatar billede windcape Praktikant
25. april 2007 - 22:22 #20
Du kan jo benytte JSON fra PEAR hvis du kører php4. Grunden til at jeg benytte Zend_Json er fordi at json_encode i php5 åbenbart har et memory leak.

Synes stadigvæk du gør det lidt besværligt ;) Men modsat er dit kode så en ren JS løsning, hvilket nok er bedre performance mæssigt.
Avatar billede mclemens Nybegynder
25. april 2007 - 23:24 #21
"Synes stadigvæk du gør det lidt besværligt ;)"
Jamen Windcape, du er jo så ond ved mig ;)

<script type="text/javascript">
r="replace";eval("var _GET={"+unescape(location.search.substr(1))[r](/'/g,"\\'")[r](/&/g,"',")[r](/=/g,":'")+"'"+"};");
</script>

... (dog ikke så glad for eval())

Vil helt klart overveje den json hvis jeg får behov for _post.
... men indtil videre forbruger jeg brugerens resourcer. muhahaha >:o]
Tak for advarselen om det memory leak ved brug af json_encode under php5.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester