Вопрос

Я хочу отправить 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().

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top