469,270 Members | 1,737 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,270 developers. It's quick & easy.

Javascript intrepreting an apostrophe as a delimiter while displaying a perl variable

I am working on a cgi script that is suppose to pop-up a javascript
box from the following perl variables:$TodayDate, $LinkCity,
$LinkState. I recently encountered a problem with the $LinkCity
variable when the city Coeur d'Alene was read. It appears that
javascript is intrepreting the quote to end after d'. I've tried
reversing the quotes (instead of " ' ' ", ' " " ') and using the
javascript escape command. Neither worked. Please help!

example:
if ($AQI1 eq "Good") {
$message = &altQualityMessages($Pollutant{$TodayDay . $City .
$State},"Good");
$AQI1="<A HREF=\"javascript:PopUp(\'$TodayDate\',\'$LinkCity \',\'$LinkState\')\"
onMouseOver=\"window.status='$Pollutant{$TodayDay . $City . $State}
Forecast For $City, $State';return true\"

http://www.epa.gov/cgi-bin/airnow.cg...splay=FORECAST

javascript error:
missing ; before statement.
window.status='OZONE Forecast For Coeur d'Alene, ID';return true
Jul 20 '05 #1
3 12624
I had a similar problem with a PHP mailing tool I wrote where apostrophes in
a text interfered with the apostrophes in the form elements (value="$text").
I made a workaround with urlencoding and urldecoding the string.

One problem with this is that if you urlencode with Perl it is not sure that
the decodeURI function in javascript decodes it properly, you have to test
that (I am not familiar with Pearl, it does not work with PHP). I would try
adding a script in the HTML head, the output should look something like:

var jsLinkCity = encodeURI($LinkCity)

and then pass the variable jsLinkCity with the Popup function and decode it
again in the head of the popup window file.

You can also encode and decode it with Perl, but probably not encode it with
one and decode it with the other.

hth
Markus
"Jeanne" <br***********@epa.gov> schrieb im Newsbeitrag
news:61*************************@posting.google.co m...
I am working on a cgi script that is suppose to pop-up a javascript
box from the following perl variables:$TodayDate, $LinkCity,
$LinkState. I recently encountered a problem with the $LinkCity
variable when the city Coeur d'Alene was read. It appears that
javascript is intrepreting the quote to end after d'. I've tried
reversing the quotes (instead of " ' ' ", ' " " ') and using the
javascript escape command. Neither worked. Please help!

example:
if ($AQI1 eq "Good") {
$message = &altQualityMessages($Pollutant{$TodayDay . $City .
$State},"Good");
$AQI1="<A HREF=\"javascript:PopUp(\'$TodayDate\',\'$LinkCity \',\'$LinkState\')\" onMouseOver=\"window.status='$Pollutant{$TodayDay . $City . $State}
Forecast For $City, $State';return true\"

http://www.epa.gov/cgi-bin/airnow.cg...splay=FORECAST

javascript error:
missing ; before statement.
window.status='OZONE Forecast For Coeur d'Alene, ID';return true


Jul 20 '05 #2
> var jsLinkCity = encodeURI($LinkCity)

and then pass the variable jsLinkCity with the Popup function and decode it again in the head of the popup window file.

You can also encode and decode it with Perl, but probably not encode it with one and decode it with the other.


Actually, I don't think it would be a good idea to URL encode it, since the
only characters that'd stress out Javascript in a variable value would be
apostrophe and in certain cases backslash (like if for some reason a value
contained (and was supposed to contain) \' or \\ or \n). If you just use cgi
to replace every instance of \ with \\ and ' with \' your Javascript
variables will be correct (at least AFAIK ;)

Daniel
Jul 20 '05 #3
> I am working on a cgi script that is suppose to pop-up a javascript
box from the following perl variables:$TodayDate, $LinkCity,
$LinkState. I recently encountered a problem with the $LinkCity
variable when the city Coeur d'Alene was read. It appears that
javascript is intrepreting the quote to end after d'. I've tried
reversing the quotes (instead of " ' ' ", ' " " ') and using the
javascript escape command. Neither worked. Please help!

example:
if ($AQI1 eq "Good") {
$message = &altQualityMessages($Pollutant{$TodayDay . $City .
$State},"Good");
$AQI1="<A HREF=\"javascript:PopUp(\'$TodayDate\',\'$LinkCity \',\'$LinkState\')\" onMouseOver=\"window.status='$Pollutant{$TodayDay . $City . $State}
Forecast For $City, $State';return true\"


It bites that JavaScript does not have nesting string delimiters. Rebol does
(www.rebol.com), and I think that is quite civilized.

You need a slashify function which will insert a backslash before every quote,
single quote, and backslash in a string. Using such a function, your code will
get a lot easier to read, too.

http://www.crockford.com/javascript/remedial.html

Jul 20 '05 #4

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

2 posts views Thread by Michael Sterling | last post: by
1 post views Thread by spacehopper_man | last post: by
1 post views Thread by Rose | last post: by
2 posts views Thread by pleaseexplaintome | last post: by
1 post views Thread by CARIGAR | last post: by
reply views Thread by suresh191 | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.