我正试图用类似的XML向服务器发送一个简单的URL请求
xmlhttp.open("GET","serverFile.php?q="+str,true);
xmlhttp.send();
javascript文件中包含三个变量,即:
var userName = Steve;
var findtype = Green Holder;
var findcategory = B Provincial;
我试图将字符串"打包"成某种
var combinedString = "find&userName=" + userName + "&type=" + findType + "&category=" + findCategory;
然后调用上面的函数
xmlhttp.open("GET","serverFile.php?q="+combinedString,true);
但我很困惑如何在服务器端解码,或者这是否有效。我最初想做一个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编码,但组合字符串的形式合适吗?"&"会适当地划分内容吗?还是我需要&
,并且我需要在空格之间加一个加号?还是它自己会这样做?任何信息都会有所帮助!
在使用字符串串联之前,您需要用JavaScript对URL组件进行编码。
combinedString = ... + encodeURIComponent(userName) + ... + encodeURIComponent(findType) + ...
PHP将自动用url解码值填充$_GET
,所以如果您要传递:
?foo=%2F%40%23%24
PHP会自动将$_GET['foo']
解码为等于"/@#$"
至于&
注释,只有在使用XML中的值时才需要转义XML(在本例中为HTML,它很接近,但不完全相同)。
如果你只是在浏览器的位置栏中输入,你会使用:
somepage.php?foo=bar&fizz=buzz
但如果你在锚元素(<a>
)中标记它,你会使用:
<a href="somepage.php?foo=bar&fizz=buzz">lorem ipsum</a>