AJAX загрузка страницы - PullRequest
       6

AJAX загрузка страницы

4 голосов
/ 14 ноября 2010

Привет, у меня есть страница с меню навигации слева и при любой ссылке в этом меню щелкает, Ajax получить вызов отправляется на сервер и правая сторона обновляется с новой страницей.

Как я сейчас это делаю, создав 2 столбца, левый столбец содержит навигационную ссылку и правый столбец div с именем содержимое, имеющее dojotype dojox.layout.ContentPane.Now, когда данные поступают с сервера, я изменяю их содержимое следующим образом

dijit.byId("thecontent").setContent=data

Теперь, когда я нажимаю на навигационную ссылку, справа появляется отображается правильно (на этой странице есть dijits, а также некоторые скрипты для обрабатывать события onclick). Но firebug возвращает сообщение об ошибке

"Tried to register widget with id==thecontent but that id is already registered"

мое основное включение в додзё выглядит так: -

<script type="text/javascript" src="http://o.aolcdn.com/dojo/1.5/dojo/dojo.xd.js"djConfig="parseOnLoad:false"></script>

Я делаю dojo.parser.parse () в функции dojo.addOnLoad следующим образом: -

 dojo.addOnLoad(function(){
     dojo.require("dijit.form.Button");
     dojo.require("dijit.form.Textarea");
     dojo.require("dijit.form.ValidationTextBox");
     dojo.require("dojox.layout.ContentPane");
     dojo.require("dijit.Editor");
   dojo.addOnLoad(function(){
        dojo.parser.parse();
        sendgetrequest();//this initiates the xhrget request
        dojo.removeClass(dojo.byId("doc3"),"hiddendiv");
        }

);
    })

Я также не могу запустить какие-либо сценарии на этой новой загруженной странице. Событие onclick не работает, отображаются только виджеты dijit ...

1 Ответ

1 голос
/ 13 июля 2011

Ошибка означает, как уже сказал Кен, что вы создаете dijit с уже существующим идентификатором.Я полагаю, что вы загружаете контент AJAX на правой панели, не разрушая сначала старую правую панель.

Попробуйте вызвать destroyRecursive в главном контейнере dijit на правой панели перед загрузкой нового контента.Кроме того, если вам не нужно устанавливать идентификатор ди-джита, вы можете просто удалить его (но это оставит дыру в памяти, потому что старые ди-джиты не уничтожены).

...