2012-03-09 90 views
1

我试图发送一个简单的URL请求到服务器与XML连同我已经包含在JavaScript文件中的三个变量的URL编码PHP

xmlhttp.open("GET","serverFile.php?q="+str,true); 
xmlhttp.send(); 

线的东西,即:

var userName = Steve; 
var findtype = Green Holder; 
var findcategory = B Provincial; 

我试图“一揽子”串在一起,到有点

var combinedString = "find&userName=" + userName + "&type=" + findType + "&category=" + findCategory; 

,然后调用FUNC以上重复

​​3210

但我很困惑如何解码这在服务器端或这是否会工作。我本来想有一个if语句的:

$q=$_GET["q"]; 
if ($q == "find") 
{ 
    $name=$_GET["userName"]; 
    $type=$_GET["type"]; 
    $category=$_GET["category"]; 
    ...do other coding here to get data 
} 

但我很新的PHP,所以我不知道如果这是正确的做法。我试图找出适当的URL编码在线,但是在适当的形式组合的字符串? “&”是否会适当地划分内容,或者我是否需要&,我是否需要在空格之间加上一个加号或单独做它?任何信息都有帮助!

回答

2

在使用字符串连接之前,您需要使用JavaScript对URL组件进行编码。

combinedString = ... + encodeURIComponent(userName) + ... + encodeURIComponent(findType) + ... 

PHP会自动填入$_GET与URL解码值,所以如果你要传递:

?foo=%2F%40%23%24 

PHP将自动解码$_GET['foo']等于"/@#$"


至于你&评论,你只需要在XML中使用值时转义XML(或者在t中使用HTML他的案例很接近但不完全相同)。

如果你只是在浏览器的地址栏中键入,你会使用:

somepage.php?foo=bar&fizz=buzz 

但是,如果你在一个锚元素(<a>)标识这件事,你会使用:

<a href="somepage.php?foo=bar&amp;fizz=buzz">lorem ipsum</a>