Есть такая проблема: на HTML странице есть форма, в которой есть текстовые поля, по нажатию на кнопку (кнопка не типа Submit) необходимо послать на сервер запрос. Таким образом составляем URL, например, test.php?action=SomeAction&name=SomeText. Так вот SomeText - это значение одного из текстовых полей, причем текст содержит русские символы, соответственно для того, чтобы использовать его в параметрах запроса, надо его перевести в соответствующий код. Делаем это, используя функцию JavaScript escape(str). Текст преобразовывается в формат %u0432%u0444 и т.д, т.е в юникод формат. В test.php получаем параметры запроса с помощью $_GET['name']. Однако я получаю точно такие же кракозябли. Вопрос. Как эти кракозябли перекодировать в нормальный текст? (функция rawurldecode не помогла)
Так не получится, т.к запрос должен выполняться асинхронно, а не на событие OnSumbit. Это AJAX подход. Значение параметра должно фигурировать в параметрах запроса.
Что именно произошло? Почему она не помогла, или по каким параметрам она не подходит? По моему Олег имеет в виду XMLHTTPRequest. Хотя я не уверен...
Сослался на статью Котерова [http://www.dklab.ru/lib/Subsys_JsHttpRequest/], просто сам посылал русские буквы этим способом, и знаю, что он работает: Вот лог, если что: 20:49 #KiD: там есть прямо раздел в статье - решение проблемы с кодировками... 20:54 SergeyL: xmlrequest = new XMLHttpRequest(); ... url = "index.php" xmlrequest.open("POST", url, true); xmlrequest.send(null); Если засылаю такой запрос через POST, то все значения с формы автоматически также присоединяться к запросу? 20:55 SergeyL: то бишь в index.php я смогу просто вытащить их как $_POST['textfield']? 20:56 #KiD: да 20:57 #KiD: вы их в методе open перечислите прям как getElementById().value - и они уйдут постом когда сделаете метод post 20:58 #KiD: req.open('POST', 'load.php?test=abc', true); // Посылаем данные запроса (задаются в виде хэша). var query = '' + document.getElementById('query').value; req.send({ q: query }); 21:20 SergeyL: спасибо, сейчас попробую
Для грядущих поколений. url-кодирование строки — encodeURIComponent url-декодирование строки — decodeURIComponent escape() тут вообще никоем боком.
Второй день не могу разобраться как POST-ом послать данные есть такие JS фенкции Эта при нажатии на кнопку Код (Text): function change_kom(p){ var kom=document.getElementById('id_kom').value; var url='js/player_ch.php'; var param=new Array(); param['t']=document.getElementById('id_name_kom').value; sendRequest(url, param, 'POST'); } Это ALAXовские Код (Text): function getXMLHTTPRequest(){ var xRequest=null; if (window.XMLHttpRequest){ xRequest=new XMLHttpRequest(); } else if (window.ActiveXObject) { xRequest=new ActiveXObject("Microsoft.XMLHTTP"); } return xRequest; } function sendRequest(url, params, HttpMethod){ if (!HttpMethod){ HttpMethod="GET"; } req=getXMLHTTPRequest(); if (req){ req.onreadystatechange=onReadyState; req.open(HttpMethod, url, true); req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); req.send(params); } } докапался до того что выдается ошибка (в консоли Firefox) Ошибка: uncaught exception: [Exception... "Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIXMLHttpRequest.send]" nsresult: "0x80070057 (NS_ERROR_ILLEGAL_VALUE)" location: "JS frame :: http://toto.greenmile.ru/admin/js/player.js :: sendRequest :: line 172" data: no] Line 172 это req.send(params); Кто нить сталкивался с такой проблемой???
Вот таким образом не работало {q: perem}. Ну да ладно, разобрался уже кое как Отдаю вот так post='var=блабла&var2=блаблабла'; Я как мне на сервере обратно строки раздекодить с помощью php, если они закодированы java-функцией encodeURIComponent ???
Вльдемар, раскодируя уже раскодированное ты можешь получить черти-что. Так что надежного тут нет ничего.