2011-05-29 75 views
1

我正在创建网站更新程序。我使用AJAX通过CGI传递字符串。AJAX:通过包含'&'字符的CGI传递字符串

我在那里,如果我的字符串包含一个“&”字符他们得到正确分离,因为CGI如果我把它分隔参数/变量由“&”字

所以一个问题:

http://mywebsite.com?user=blah&mystring=I_am_happy_&_sad 

当我得到的变量在我的python脚本mystring变量将是不正确的:

input_data = cgi.FieldStorage() 
user   = input_data.getvalue("user") # correctly = "blah" 
mystring  = input_data.getvalue("mystring") # incorectly = "I am happy " 
# mystring should = "I am happy & sad" 

现在我在Javascript中使用我自己的post()函数发送AJAX请求,所以我不使用jQuery或任何东西。有没有一种简单的方法通过CGI发送包含'&'的字符串,还是我需要编写自己的函数来解析字符串&用其他的字符替换'&'字符?

+0

这必须是第五次这样的东西本周被问...... – 2011-05-29 04:59:48

回答

4

你需要URL编码与符号字符:

http://mywebsite.com?user=blah&mystring=I_am_happy_%26_sad 

要做到这一点,JavaScript提供encodeURIComponent()和Python提供urllib.quote()

+0

好吧,我如何网址编码&字符? – user593747 2011-05-29 05:00:58

+0

请参阅:“如何将字符串转换为URL编码?” http://www.javascripter.net/faq/escape.htm – 2011-05-29 05:03:05

+0

另请参阅:“如何在Javascript中编码URL?” http://stackoverflow.com/questions/332872/how-to-encode-a-url-in-javascript – 2011-05-29 05:04:00