/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Kalde javascript i php
Fra : Søren Bay


Dato : 07-09-07 09:28

Jeg har denne linie, som af andre grunde er inde i et php-tag

<?php
....
echo "<td><input id='BCHLDK[$i]' name='BCHLDK[$i]' value='$BCHLDK[$i]'
type='text' size='12' tabindex=1".$i. $j."
onkeyup='ajax_showOptions(this,'getClichesByLetters',event)'></td>";
....
?>

Problemet er at kalde ajax_showOptions. De "flyvepinger" der er omkring
getClichesByLetters fejltolkes sandsynligvis. Jeg har prøvet med
/'getClichesByLetters/' uden held.

Hvad gør jeg så?

//Søren

 
 
Andreas Andersen (07-09-2007)
Kommentar
Fra : Andreas Andersen


Dato : 07-09-07 19:17

> <?php
> ...
> echo "<td><input id='BCHLDK[$i]' name='BCHLDK[$i]' value='$BCHLDK[$i]'
> type='text' size='12' tabindex=1".$i. $j."
> onkeyup='ajax_showOptions(this,'getClichesByLetters',event)'></td>";
> ...
> ?>
>
> Problemet er at kalde ajax_showOptions. De "flyvepinger" der er omkring
> getClichesByLetters fejltolkes sandsynligvis. Jeg har prøvet med
> /'getClichesByLetters/' uden held.

Det skal vel også være \' - ellers onkeyup=\"ajax_showOption(this,
'getClichesByLetters', event)\">. I øvrigt mangler du vist et par steder $
foran BCHLDK.

/Andreas


Birger (07-09-2007)
Kommentar
Fra : Birger


Dato : 07-09-07 11:16

"Andreas Andersen" <andreas2411@gmail.com> skrev i en meddelelse
news:56b79$46e1173e$55186da4$26466@news.arrownet.dk...
>> <?php
>> ...
>> echo "<td><input id='BCHLDK[$i]' name='BCHLDK[$i]' value='$BCHLDK[$i]'
>> type='text' size='12' tabindex=1".$i. $j."
>> onkeyup='ajax_showOptions(this,'getClichesByLetters',event)'></td>";
>> ...
>> ?>
>>
>> Problemet er at kalde ajax_showOptions. De "flyvepinger" der er omkring
>> getClichesByLetters fejltolkes sandsynligvis. Jeg har prøvet med
>> /'getClichesByLetters/' uden held.
>
> Det skal vel også være \' - ellers onkeyup=\"ajax_showOption(this,
> 'getClichesByLetters', event)\">. I øvrigt mangler du vist et par steder $
> foran BCHLDK.
>
> /Andreas


Det er vist mere fordi du har et $ for meget, foran BCHLDK i value.
Der er ingen grund til at escape ', når de står inde i ".
Desuden skal getClichesByLetters slet ikke i anførselstegn.. (antager at det
er navn på en funktion)

Jeg ville skrive den sådan:
echo '<td><input id="BCHLDK['.$i.']" name="BCHLDK['.$i.']"
value="BCHLDK['.$i.']" type="text" size="12" tabindex="1"'.$i. $j.'
onkeyup="ajax_showOptions(this,getClichesByLetters,event);"></td>';

Men det har nok noget at gøre med at jeg foretrækker at have parametre i
HTML omgivet af ".


Birger



Andreas Andersen (07-09-2007)
Kommentar
Fra : Andreas Andersen


Dato : 07-09-07 11:38


> Det er vist mere fordi du har et $ for meget, foran BCHLDK i value.
> Der er ingen grund til at escape ', når de står inde i ".
> Desuden skal getClichesByLetters slet ikke i anførselstegn.. (antager at
> det er navn på en funktion)
>
> Jeg ville skrive den sådan:
> echo '<td><input id="BCHLDK['.$i.']" name="BCHLDK['.$i.']"
> value="BCHLDK['.$i.']" type="text" size="12" tabindex="1"'.$i. $j.'
> onkeyup="ajax_showOptions(this,getClichesByLetters,event);"></td>';

Ok, nu er det nok bare mig der er forvirret, men er BCHLDK ikke en
php-variabel? I den version af php jeg kører, kan man kun sætte sådanne
direkte ind i en streng, hvis strengen er omgivet af " " og ikke ' ' og hvis
man skriver $ foran. Jeg tror escape-problemet var på klienten -
onkeyup='ajax_showOptions(this, 'getClichesByLetters', event)' duer ikke når
det skal læses af browseren så enten skal 'erne escapes eller det skal være
onkeyup=\"ajax_showOption(this, 'getClichesByLetters', event)\" (er '
overhovedet gyldigt om attributer i HTML?). Hvis getClichesByLetters er en
funktion er det selvfølgelig irrelevant.

/Andreas


Birger (07-09-2007)
Kommentar
Fra : Birger


Dato : 07-09-07 12:49

"Andreas Andersen" <andreas2411@gmail.com> skrev i en meddelelse
news:1b9c7$46e12a35$55186da4$23007@news.arrownet.dk...
>

> Ok, nu er det nok bare mig der er forvirret, men er BCHLDK ikke en
> php-variabel? I den version af php jeg kører, kan man kun sætte sådanne
> direkte ind i en streng, hvis strengen er omgivet af " " og ikke ' ' og
> hvis man skriver $ foran. Jeg tror escape-problemet var på klienten -
> onkeyup='ajax_showOptions(this, 'getClichesByLetters', event)' duer ikke
> når det skal læses af browseren så enten skal 'erne escapes eller det skal
> være onkeyup=\"ajax_showOption(this, 'getClichesByLetters', event)\" (er '
> overhovedet gyldigt om attributer i HTML?). Hvis getClichesByLetters er en
> funktion er det selvfølgelig irrelevant.
>
> /Andreas


Det må vi have Søren til at svare på.
Jeg opfatter BCHLDK som navn for de enkelte elementer, og ikke en php
variabel.
Der anvendes navngivning som kunne opfattes som indexering i et array - hvis
det er tilfældet, skal der selvfølgelig $ foran, og strengen skal sættes
anderledes sammen.
Jeg mener at " med arrayvariable ikke fungerer, så der skal nok bruges
concat - altså . (dot) til at sammensætte strengene.
Variable i PHP begynder altid med $.
Med enkelt apostroffer kan man ikke indsætte variable - men det kan man med
dobbelt.
Det er også sådan at du kan indsætte en enkelt apostrof (') inde i en streng
defineret med dobbeltapostrof : $txt = "De' Kurt's"; uden at escape. Også
omvendt : $txt = 'Han sagde : "Skidt med det".';
Men skal man bruge samme apostrof som man definerer strengen med, skal den
escapes. : $txt = 'De/' Kurt/'s'; eller $txt = "Han sagde : /"Skidt med
det/".";.
Om ajaxkaldet: Jeg opfatter getClichesByLetter som navnet på en javascript
funktion, og hvis det er rigtigt, skal det slet ikke i apostroffer.

Oprindeligt skulle alle attribut værdier i HTML stå i dobbelt apostroffer ".
Det skal de ikke mere, og behøver vist slet ikke være i apostroffer længere
(med mindre de indholder mellemrum), og der er frit valg mellem ' og ".

Birger



Søren Bay (07-09-2007)
Kommentar
Fra : Søren Bay


Dato : 07-09-07 13:46


>
> Det må vi have Søren til at svare på.


name='BCHLDK[$i]' er ikke angivet med $ foran, fordi det blot er et
feltnavn der for et tal i slutningen (BCHLDK1) - hele sætningen står
nemlig inde i en while, der kan være at vilkårlig længde.

value='$BCHLDK[$i]' er derimod en værdi der bliver indsat!

//Søren

Birger (07-09-2007)
Kommentar
Fra : Birger


Dato : 07-09-07 16:15

"Søren Bay" <bay@cool.dk> skrev i en meddelelse
news:46e14809$0$69195$edfadb0f@dread12.news.tele.dk...
>
>>
>> Det må vi have Søren til at svare på.
>
>
> name='BCHLDK[$i]' er ikke angivet med $ foran, fordi det blot er et
> feltnavn der for et tal i slutningen (BCHLDK1) - hele sætningen står
> nemlig inde i en while, der kan være at vilkårlig længde.
>
> value='$BCHLDK[$i]' er derimod en værdi der bliver indsat!
>
> //Søren


Så er dine ting jo rigtige...

Som sagt tidligere er der et "problem" med indexering af arrays, når det
sker inde i en streng.
Se evt. http://www.php.net/manual/en/language.types.string.php
Jeg ville derfor fortrække at sætte strengen sammen med concat (.), som du
også gør andre steder med $i og $j.

echo "<td><input id='BCHLDK[".$i."]' name='BCHLDK[".$i."]'
value='".$BCHLDK[$i]."'
type='text' size='12' tabindex=1".$i. $j."
onkeyup='ajax_showOptions(this,'getClichesByLetters',event)'></td>";

Det er stadig uklart, om getClichesByLetters er en streng eller navn på en
funktion.
Er det en streng skal den have " omkring - eller som jeg ville foretrække
det:

... onkeyup=/"ajax_showOptions(this,'getClichesByLetters',event);/"></td>";

Er det en funktion, skal der ikke være noget omkring det

... onkeyup='ajax_showOptions(this,getClichesByLetters,event);'></td>";


Birger



Martin (10-09-2007)
Kommentar
Fra : Martin


Dato : 10-09-07 11:49

Birger wrote:
> .. onkeyup=/"ajax_showOptions(this,'getClichesByLetters',event);/"></td>";

pssst.... / skal nu altså være \ :)

Søren Bay (14-09-2007)
Kommentar
Fra : Søren Bay


Dato : 14-09-07 10:15

Martin skrev:
> Birger wrote:
>> ..
>> onkeyup=/"ajax_showOptions(this,'getClichesByLetters',event);/"></td>";
>
> pssst.... / skal nu altså være \ :)


Ok - takker for hjælpen

//Søren

Martin (07-09-2007)
Kommentar
Fra : Martin


Dato : 07-09-07 14:57

Søren Bay wrote:
> Jeg har denne linie, som af andre grunde er inde i et php-tag
>
> <?php
> ...
> echo "<td><input id='BCHLDK[$i]' name='BCHLDK[$i]' value='$BCHLDK[$i]'
> type='text' size='12' tabindex=1".$i. $j."
> onkeyup='ajax_showOptions(this,'getClichesByLetters',event)'></td>";
> ...
> ?>
>
> Problemet er at kalde ajax_showOptions. De "flyvepinger" der er omkring
> getClichesByLetters fejltolkes sandsynligvis. Jeg har prøvet med
> /'getClichesByLetters/' uden held.

onkeyup='ajax_showOptions(this,'getClichesByLetters',event)'>
Da det skrives således, så tror html/browseren at du slutter din onkeyup
funktion ved næste ' - altså ligefør getClichesByLetters, og dermed er
din onkeyup funktion jo død - så derfor skal den skrives

onkeyup='ajax_showOptions(this,"getClichesByLetters",event)'>

Hvis du så yderligere får problemer med php syntaxen, så må du skrive

onkeyup='ajax_showOptions(this,\"getClichesByLetters\",event)'>
og hermed er din html kode korrekt.

Søg
Reklame
Statistik
Spørgsmål : 177500
Tips : 31968
Nyheder : 719565
Indlæg : 6408509
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste