Как кодировать URL в JavaScript и PHP? - PullRequest
0 голосов
/ 25 февраля 2010

Я хочу отправить URL в запросе POST в переменную с именем surl. Как я должен кодировать его в JavaScript и декодировать в PHP? Например, значение surl может быть http://www.google.co.in/search?q=javascript+urlencode+w3schools.

EDIT

Извините, я забыл упомянуть, это не отправка формы, а запрос ajax.

Ответы [ 3 ]

3 голосов
/ 25 февраля 2010

Вам не нужно ни к чему. Отправь как есть. Браузер и 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',
)
2 голосов
/ 25 февраля 2010

Используйте encodeURIComponent(uri) (для кодирования) и decodeURIComponent(uri) для декодирования,

Eg (кодировка).

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

0 голосов
/ 25 февраля 2010

Что касается PHP, то это urlencode() и urldecode().

...