Есть необходимость: передавать параметры непосредственно JavaScript.
Мы можем передавать параметры через GET, POST, но при передаче этих параметров просто будет загружаться новая страница, т.е. если в кеше браузера есть
some.so/index.php?id=2
а мы запрашиваем
some.so/index.php?id=3
то сервер для нас сгенерирует новую страницу, он не будет брать из кеша some.so/index.php?id=2 (и правильно будет делать).
Таже самая ситуация и с POST, поэтому говорить о том, что методами GET и POST можно передать параметры яваскрипту конечно можно, но это будет не совсем правдой. Т.к. параметры передаются на сервер, там генерируется новый контент, а там можно что угодно делать. Хоть напрямую GET переменные брать из window.location.href, хоть как-то серверным языком каждый раз заново генерить JavaScript. а это всё только имитация запросов к JavaScript.
Однако, есть один символ в стандарте URL, который нам поможет.
Это символ решетки (#), хотя некоторые говорят, что это символ английской денежной единицы, но сейчас это не важно.
Весь фокус в том, что если в кеше есть
some.so/index.php#id:2
а мы запросим
some.so/index.php#id:3
то вторая страница будет взята из кеша (в который она попала после первого запроса).
Итак, перейдем к делу: после символа решетки в URL разрешено использовать символы
: _ — .
и любые латинские символы.
Пусть пара (ключ: значение) у нас будут разделяться точкой; сам ключ отделяться от значения двоеточием, а экранирование будем делать при помощи подчеркивания.
Таким образом, если мы хотим передать 2 параметра, то выглядеть это будет примерно так:
some.so/index.php#id:2.par2:dgsdgd
если хотим передать символы точки, двоеточия или не латинские символы, то делаем это так:
some.so/index.php#id:_56_34.par2:_21_20_54
От обычных ссылок some.so/index.php#chapter7 такие запросы к JavaScript (jR = JavaScript Request) можно отличать по наличию двоеточия (:) после #, т.к. я не разу не видел, чтобы там кто-то ставил двоеточие.
Написать js функции, которые будут обрабатывать jR не составляет труда, — берем window.location.href, обрезаем его регэкспом, сплитим строку в массив, сплитим элементы массива на ключ и значение. Вот и всё.
Это реально работает, и реально бережет трафик, дает веселые эффекты с AJAX, в общем, экспериментируйте.
Конечно, ТБЛ не очень бы порадовался такому использованию, но всё таки, думаю, клиентский JavaScript заслужил то, что теперь он будет иметь возможность получать параметры непосредственно для себя. Ура!
Мы можем передавать параметры через GET, POST, но при передаче этих параметров просто будет загружаться новая страница, т.е. если в кеше браузера есть
some.so/index.php?id=2
а мы запрашиваем
some.so/index.php?id=3
то сервер для нас сгенерирует новую страницу, он не будет брать из кеша some.so/index.php?id=2 (и правильно будет делать).
Таже самая ситуация и с POST, поэтому говорить о том, что методами GET и POST можно передать параметры яваскрипту конечно можно, но это будет не совсем правдой. Т.к. параметры передаются на сервер, там генерируется новый контент, а там можно что угодно делать. Хоть напрямую GET переменные брать из window.location.href, хоть как-то серверным языком каждый раз заново генерить JavaScript. а это всё только имитация запросов к JavaScript.
Однако, есть один символ в стандарте URL, который нам поможет.
Это символ решетки (#), хотя некоторые говорят, что это символ английской денежной единицы, но сейчас это не важно.
Весь фокус в том, что если в кеше есть
some.so/index.php#id:2
а мы запросим
some.so/index.php#id:3
то вторая страница будет взята из кеша (в который она попала после первого запроса).
Итак, перейдем к делу: после символа решетки в URL разрешено использовать символы
: _ — .
и любые латинские символы.
Пусть пара (ключ: значение) у нас будут разделяться точкой; сам ключ отделяться от значения двоеточием, а экранирование будем делать при помощи подчеркивания.
Таким образом, если мы хотим передать 2 параметра, то выглядеть это будет примерно так:
some.so/index.php#id:2.par2:dgsdgd
если хотим передать символы точки, двоеточия или не латинские символы, то делаем это так:
some.so/index.php#id:_56_34.par2:_21_20_54
От обычных ссылок some.so/index.php#chapter7 такие запросы к JavaScript (jR = JavaScript Request) можно отличать по наличию двоеточия (:) после #, т.к. я не разу не видел, чтобы там кто-то ставил двоеточие.
Написать js функции, которые будут обрабатывать jR не составляет труда, — берем window.location.href, обрезаем его регэкспом, сплитим строку в массив, сплитим элементы массива на ключ и значение. Вот и всё.
Это реально работает, и реально бережет трафик, дает веселые эффекты с AJAX, в общем, экспериментируйте.
Конечно, ТБЛ не очень бы порадовался такому использованию, но всё таки, думаю, клиентский JavaScript заслужил то, что теперь он будет иметь возможность получать параметры непосредственно для себя. Ура!