decodeURIComponent (uri) не работает?

Я использую Ajax для размещения содержимого, и я использую http.send(encodeURIComponent(params)); для кодирования … но я не могу их декодировать в PHP. Я использую POST, поэтому я не думал, что требуется кодирование? Я смущен относительно того, как я должен декодировать значения в PHP …

 params = "guid="+szguid+"&username="+szusername+"&password="+szpassword+"&ip="+ip+"&name="+name+"&os="+os; //alert(params); document.body.style.cursor = 'wait';//change cursor to wait if(!http) http = CreateObject(); nocache = Math.random(); http.open('post', 'addvm.php'); http.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); http.setRequestHeader("Content-length", params.length); http.setRequestHeader("Connection", "close"); http.onreadystatechange = SaveReply; http.send(encodeURIComponent(params)); 

encodeURIComponent будет кодировать все & s и = s, которые ограничивают ваши пары ключ / значение. Вам нужно использовать его по каждой части отдельно. Вот так:

  params = "guid=" + encodeURIComponent(szguid) + "&username=" + encodeURIComponent(szusername) + "&password=" + encodeURIComponent(szpassword) + "&ip=" + encodeURIComponent(ip) + "&name=" + encodeURIComponent(name) + "&os=" + encodeURIComponent(os); //alert(params); document.body.style.cursor = 'wait';//change cursor to wait if(!http) http = CreateObject(); nocache = Math.random(); http.open('post', 'addvm.php'); http.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); http.setRequestHeader("Content-length", params.length); http.setRequestHeader("Connection", "close"); http.onreadystatechange = SaveReply; http.send(params); 

Если вы отправляете закодированные значения из JS и хотите их decode в PHP, вы можете сделать что-то вроде:

 // decode POST values so you don't have to decode each pieces one by one $_POST = array_map(function($param) { return urldecode($param); }, $_POST); // assign post values after every value is decoded