Есть ли способ заставить нормальные ссылки автоматически загружаться через ajax, а не нормально? - PullRequest
3 голосов
/ 19 сентября 2009

Я не объяснил это хорошо.

Но что я имею в виду, если у меня есть ajax-скрипт, который загружает содержимое страницы в элементе DIV через функцию loadpage ('what.php'); вместо того, чтобы делать это вручную для всех ссылки, есть ли способ иметь скрипт, который автоматически загружает все обычные ссылки через эту функцию ajax?

Как и на Facebook, ваш профиль загружается через ajax, но если вы посмотрите на их код, у них просто есть обычная ссылка на профиль.

Ура!

Ответы [ 4 ]

7 голосов
/ 19 сентября 2009

Конечно, вы можете сделать это с помощью jQuery.

Этот скрипт просматривает документ, находит каждый элемент привязки и привязывает обработчик события к событию click каждого из них. При щелчке элемента привязки обработчик события находит атрибут href и загружает эту страницу в #targetDiv (вы можете вызывать этот div, как хотите, конечно).

<script type="text/javascript"
        src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js">
</script>
<script type="text/javascript">
$(document).ready(function() {
  $("a").click(function() {
    $("#targetDiv").load(($(this).attr("href") + " body");
    return false;
  });
});
</script>

...

<!-- In your document body, this is the div you'd load the pages into. -->
<div id="targetDiv"></div>
1 голос
/ 24 ноября 2015

Просто и красиво. Проверь это: Bjax

Использование:

<script src="bjax.min.js" type="text/javascript"></script>
<link href="bjax.min.css" rel="stylesheet" type="text/css" />

Наконец, включите это в заголовок вашего HTML:

$('a').bjax();

Для получения дополнительных настроек ознакомьтесь с демонстрацией здесь: Bjax Demo

1 голос
/ 19 сентября 2009

Я предполагаю, что это будет примерно так:

$(document).ready(function(){
    $("a").click(function(){
        $("body").load($(this).attr("href") + " body");
        return false;
    });
});

Это приведет к тому, что все теги <a> на странице вызовут функцию, которая загружает HTML-документ из атрибута тега href, удаляет его тег body и заменяет содержимое тега body текущей страницы на содержимое нового тега body. Таким образом, проще работать без JavaScript, а также интегрировать его в существующий сайт.

Чтобы использовать его, поместите его в тег <script> в заголовке главной страницы или во внешний файл JS.

Обратите внимание, однако, что этот код обновляет только содержимое тега <body>, заголовок (включая тег заголовка) остается нетронутым. Вам может понадобиться добавить дополнительный код для обновления подобных вещей.

1 голос
/ 19 сентября 2009

Вы можете использовать для этого JQuery (если я правильно понял ваш вопрос).

Сначала вы можете сделать функцию loadpage () следующим образом:

function loadpage(divId, url) {
    $('#' + divId).load(url);

    return false;
}

.load () поддерживается не всеми браузерами. Если вы хотите сделать это без .load (), тогда вы можете проверить .get (). Для получения дополнительной информации о .load (), посмотрите на http://docs.jquery.com/Ajax/load

...