#asp.net #ajax #jquery
#asp.net #ajax #jquery
Вопрос:
У меня есть эта страница с Default.aspx, работающим как «master», и загрузка дочерних страниц с помощью load()
функции jQuery. Что-то вроде этого:
<ul id="navigation>
<li><a href="Item1.aspx"> Item 1</a></li>
<li><a href="Item2.aspx"> Item 2</a></li>
</ul>
<div id="contend">
<!-- Ajax loaded pages goes here -->
</div>
<div id="footer">
</div>
Проблема в том, что когда пользователь нажимает на какой-либо элемент и, скажем, выбирает открыть в новом окне (вкладке), он, очевидно, увидит только элементы с этой страницы, а не навигацию, нижний колонтитул и что-либо еще со страницы по умолчанию…
Я ищу обходной путь..
возможно, с помощью управления привязкой через URL? как #item1
Комментарии:
1. Витор, что произойдет, если у пользователя отключен javascript? Тогда будет лучше, если ссылка действительно перерисует страницу с новым содержимым на ней. Это называется прогрессивным улучшением или постепенным ухудшением, и это хорошая практика, даже если почти у всех включен javascript.
2. Вы имеете в виду, перерисовывает страницу, даже если мой вызов был сделан из меню ajax? Разве это не противоречило бы самой цели?
3. Я имею в виду, что он должен перерисовать страницу, если ajax не работает, потому что нет javascript
Ответ №1:
Отправьте дополнительный параметр с помощью ajax. Таким образом, вы можете определить, был ли запрос сделан ajax, и выбрать, как построить ответ.
Пример по запросу:
<script type="text/javascript">
$(
function()
{
$('#navigation a')
.click(
function(e)
{
e.preventDefault();
$('#contend').load(this.href,{'isAjaxRequest':true});
}
);
}
);
</script>
Если пользователь нажимает на ссылку обычным способом, также будет отправлен POST-параметр с именем «isAjaxRequest» , вы можете проверить наличие этого параметра, и если он существует, вывести только фрагмент для #contend, в противном случае всю страницу, включая верхний и нижний колонтитулы и так далее.
Комментарии:
1. Не могли бы вы предоставить (действительно простой) пример, основанный на моей структуре? Я не уверен, как я мог бы перестроить структуру..