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