Как скрыть мои параметры URL? - PullRequest
0 голосов
/ 11 ноября 2009

У меня есть несколько портлетов с некоторыми ссылками, все, что я хочу, это скрыть параметры URL. Поэтому я подумал, что было бы легко включить некоторый код jQuery, который создает форму для каждого и привязывает к ней событие click для отправки формы.

Это не работает. По какой-то причине запрос на действие не выполнен.

У кого-нибудь есть другие предложения по скрытию параметров URL?

Ответы [ 3 ]

2 голосов
/ 11 ноября 2009
<a href="#" onclick="JavaScript: handleThisLink();"> description of link </a>
<form name="mydataform" id="mydataform" action="/actionurlonyoursite" method="post">
  <input type="hidden" name="myparam" value="" />
</form>
<script type="text/javascript">
function handleThisLink()
{
    // access the hidden element in which you wish to pass the value of the parameter
    dojo.byId("myparam").value = "myvalue";
    // the value might be precomputed (while generating this page) or 
    // might need to be computed based on other data in the page
    // submit the form by HTTP POST method to the URL which will handle it.
    document.forms['mydataform'].submit();
    // also possible to actually send a background AJAX request and publish
    // the response to some part of the current page, thus avoiding full
    // page refresh
    // I used dojo.byId() as a shortcut to access the input element
    // this is based on dojo toolkit.
}

</script>
1 голос
/ 11 ноября 2009

Ссылки запускают GET запросов по умолчанию. Вы не можете запускать HTTP GET запросы без передачи параметров через URL. Единственное, что может сделать это - HTTP POST. Все параметры затем включаются в тело запроса. Но вам нужно заменить все ссылки на формы кнопками, и вам нужно изменить код на стороне сервера, чтобы он прослушивал POST запросы вместо GET запросов на соответствующие действия.

Javascript также может запускать запросы GET только в «фоновом режиме» с помощью XMLHttpRequest, но когда на клиенте отключен JS, ваше приложение будет либо ломаться, либо по-прежнему отображать параметры. Кроме того, клиент имеет полный контроль над кодом JS, поэтому он не обязательно «скрывает» параметры от клиента, а только от адресной строки браузера.

0 голосов
/ 12 ноября 2009

Вы можете использовать XMLHttpRequest для скрытия параметра URL или использовать переменную сеанса контейнера сервлета.

Может быть, вы можете использовать кодирование URL для отображения сложных данных для конечного пользователя.

удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...