2009-11-11 4 views
0

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

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

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

ответ

2
<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> 
+0

спасибо за ответ Shailesh - Как я уже говорил в моем вопросе: я уже трансформировал каждую ссылку на форму, но мой портлет действие не triggerd от этой формы - почему? Я действительно не знаю. Все параметры установлены и, кажется, правы, но ничего не происходит вообще – onigunn

+0

меня снова, похоже, что мой портал jboss реагирует только на GET не на POST – onigunn

+0

Это странно. Здесь может помочь несколько не связанная с этим дискуссия. Инструмент DOJO (библиотека JavaScript) имеет виджет под названием dijit.layout.ContentPane. Вы можете указать URL с ним (как HREF). Естественно, этот виджет принимает только URL-адреса GET. Чтобы поместить результат POST-операций внутри него, можно использовать метод setContent(). Обработчик моей кнопки отправит форму в запрос AJAX, используя POST, получит ответ, а затем вызовет метод setContent на панели содержимого, чтобы поместить в него ответ. Я не знаю, может ли ваш портал JBosss сделать что-то подобное. –

1

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

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

0

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

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

удачи

Смежные вопросы