Я хочу отправить URL-адрес в запросе POST в переменной под названием surl
. Как я должен кодировать его в JavaScript и декодировать его в PHP? Например, значение surl
может быть http://www.google.co.in/search?q=javascript+urlencode+w3schools
.
РЕДАКТИРОВАТЬ
Извините, я забыл упомянуть, что это не форма представления, а запрос ajax.
Используйте encodeURIComponent(uri)
(для кодирования) и decodeURIComponent(uri)
для декодирования,
Например (кодирование).
var uri="http://w3schools.com/my test.asp?name=ståle&car=saab"; document.write(encodeURIComponent(uri));
Вывод
HTTP% 3A% 2F% 2Fw3schools.com% 2Fmy% 20test.asp% 3Fname% 3Dst% C3% A5le% 26car% 3Dsaab
Декодирование остается для читателя. 🙂
Источник: http://www.w3schools.com/jsref/jsref_encodeURIComponent.asp
Вам ничего не нужно. Отправьте его как есть. Браузер и PHP будут выполнять все экранирование и отмену (если вы используете form.surl.value = surl; form.submit()
и $_POST['surl']
). Или вы можете просто использовать обычную форму без JavaScript (если она соответствует вашим потребностям).
Отвечая на комментарий к хэнасрафу. Попробуй это.
<form id="form" action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" onsubmit="this.via_js.value=this.via_plain_form.value;"> <input type="hidden" name="via_js"/> <input type="text" name="via_plain_form" value="Paste you url here"/> <input type="submit" name="submit" value="Submit"/> </form> <?php if (isset($_POST['submit'])) { var_export($_POST); } ?>
Для http://www.google.co.in/search?q=javascript+urlencode+w3schools
он выводит
array ( 'via_js' => 'http://www.google.co.in/search?q=javascript+urlencode+w3schools', 'via_plain_form' => 'http://www.google.co.in/search?q=javascript+urlencode+w3schools', 'submit' => 'Submit', )
Что касается PHP, это urlencode()
и urldecode()
.