2012-03-09 9 views
1

Я пытаюсь отправить простой запрос URL к серверу с XML-то вдоль линийКодировка URL для PHP

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; 

и затем вызывая FUNC выше

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

но я смущен, как декодировать это на стороне сервера, или это будет работать вообще. Первоначально я думал иметь если заявление:

$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

Прежде чем использовать конкатенацию строк, вам необходимо закодировать компоненты URL в JavaScript.

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

PHP автоматически заполнит $_GET с URL декодируется значения, так что если вы должны были пройти:

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

PHP будет автоматически декодировать $_GET['foo'] равным "/@#$"


как для вашего &, вам всегда нужно избегать XML, когда вы используете значение в XML (или HTML в t его случай, близкий, но не совсем идентичный).

Если вы просто набрав в адресной строке браузера, вы будете использовать:

somepage.php?foo=bar&fizz=buzz 

Но если вы маркировки это в анкерном элементе (<a>) вы будете использовать:

<a href="somepage.php?foo=bar&amp;fizz=buzz">lorem ipsum</a> 
Смежные вопросы