Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2011, 21:09   #1
Nikita-95
Новичок
Джуниор
 
Регистрация: 07.05.2011
Сообщений: 2
По умолчанию Дайте совет по поводу использования

Смотрите. Мне нужно что бы на сайте все страницы подгружались без перезагрузки. Решил использовать следуещее:

PHP код:
<script type="text/javascript" src="scripts/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
function show_page(){ 
    var slide = $("#ajax"); 
        slide.load("example.php"); 
}

<a href="javascript:show_page()">Загрузка страницы при нажатии</a>
<div id="ajax"></div> 
Подскажите, эффективен этот ли метод? Не будет ли он нагружать сервер или наоборот уберет нагрузку, если не подходит то дайте совет что можно использовать. И еще нужно что бы менялся адрес в адресной строке без перезагрузки. Буду очень благодарен за помощь.
Nikita-95 вне форума Ответить с цитированием
Старый 07.05.2011, 23:18   #2
8oOoRPM
Форумчанин
 
Регистрация: 12.11.2010
Сообщений: 146
По умолчанию Боже дай тебе сил гг

Серверу это тотже запрос, а скрипт не подойдёт.
Адрес нельзя менять, можно добавлять hash, как в gmail.com например.
Это http://.www.site.com/#blabalbal/blabla.php- с решёточкой.
Для того чтобы это всё дело устроить тебе пригодится

Этот плагинчик тебе поможет с хэшом, чтобы переходить туда-сяда(нативная постраничная навигация), использовать так:
$(window).hashchange(function(){... });
где функция это callback после изменения hash
Код:
(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('<iframe tabindex="-1" title="empty"/>').hide().one("load",function(){r||l(a());n()}).attr("src",r||"javascript:0").insertAfter("body")[0].contentWindow;h.onpropertychange=function(){try{if(event.propertyName==="title"){q.document.title=h.title}}catch(s){}}}};j.stop=k;o=function(){return a(q.location.href)};l=function(v,s){var u=q.document,t=$.fn[c].domain;if(v!==s){u.title=h.title;u.open();t&&u.write('<script>document.domain="'+t+'"<\/script>');u.close();q.location.hash=v}}})();return j})()})(jQuery,this);
и кстати load это хорошё, но $.ajax({ ... }) даёт больше гибкости
8oOoRPM вне форума Ответить с цитированием
Старый 08.05.2011, 01:41   #3
Nikita-95
Новичок
Джуниор
 
Регистрация: 07.05.2011
Сообщений: 2
По умолчанию

А не могли бы вы пожалуйста воссоеденить все что вы сказали, что бы раочее что то было, а то не совсем разберусь, точнее воссоедените все в один скрипт
Nikita-95 вне форума Ответить с цитированием
Старый 08.05.2011, 15:25   #4
8oOoRPM
Форумчанин
 
Регистрация: 12.11.2010
Сообщений: 146
По умолчанию ответище

Ну вот смотрите, когда нажиная браузерную кнпку "назад"- меняется хэш(из адресной строки). Вот при изменении хэша и срабатывает данный триггер (hashchange), далее вы получаете хэш с помощью window.location.hash

Допустим у вас есть страницы в той же папке с index.php(или html...).
Вот пример:
Код:
$(window).hashchange(function(){
  // site.com#drugoe.php получаете drugoe.php
  var hash = window.location.hash; 
   
  $.ajax({
      type: "GET",
      url: hash,
      dataType: "text",
      error: function(){ alert("ошибка, неверный ответ сервера...") }
      success: function(data)
            {
                 $("#a_container").html(data);
             }
  });
});
вот пример ссылки в меню
<a href="#drugoe.php">Перейти на другую страницу</a>
8oOoRPM вне форума Ответить с цитированием
Старый 08.05.2011, 15:31   #5
8oOoRPM
Форумчанин
 
Регистрация: 12.11.2010
Сообщений: 146
По умолчанию

вообще(из личного опыта) могу сказать что при получении большого количества информации время ожидания ответа будет велико, аякс грузит сервер. Я вот написал CMS-ку, так вот, после чего испытал максимально опимизированный вариант на аяксе(все страницы погружались через аякс) я понял что мне придётся писать альтернативную часть движка которая использует аякс(+-20% не более) не на 99%;

В последствие переписал полностью CMS(по сути совсем другую с нуля написал), на этот раз только админка на 70% аякс.
Осознал одно: во всём нужно знать меру!!!

Последний раз редактировалось 8oOoRPM; 08.05.2011 в 17:48.
8oOoRPM вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дайте совет Михаил70 Свободное общение 17 14.09.2009 20:52
Дайте совет по процессорам microlab Компьютерное железо 3 23.11.2008 14:02
Дайте совет! Arch100 Помощь студентам 2 11.10.2008 01:40