Снова ajax, нужна помощь с кодом.

Всем привет, снова нужна помощь.
Решил попробовать перевести на аякс поиск топиков по тегам.
Столкнулся с какой то странной ошибкой.
Если я передаю переменную $aTopics ($oViewer->Assign('aTopics',$aTopics);) в шаблон то ничего не работает. Если не передаю, то все отрабатывается но естественно я не вижу топики которые должны быть.
При этом если убрать ajax и сделать как обычный эвент по клику, то все прекрасно работает и топики выводятся.

Может быть кто то натолкнет на решение или хотя бы подскажет в какую сторону смотреть.

topic.js
ls.topic = (function ($) {

    this.searchByTag = function(idTag, idTab) { 

		var url = aRouter['filter']+idTab+'/'+'ajax-search-by-tag/';
		var params = {idTag: idTag};
		ls.ajax(url, params, function(result){
			if (result.bStateError) {
				$('#topic-list-search').hide();
				$('#topic-list-original').show();
			} else {
				$('#topic-list-original').hide();
				$('#topic-list-search').html(result.sText).show();
			}
		});
	};


Экшн
/**
	 * Отображение топиков по тегам
	 *
	 */
	protected function EventAjaxSearchByTag() {

		 // Получаем тег из УРЛа
		$this->Viewer_SetResponseAjax('json');
                $sTagId = getRequestStr('idTag', null, 'post');  // Тег по которому ищем.

		 // Получаем список топиков
                 //1 и 100 количество страниц и топиков на страницу
		$aResult = $this->Topic_GetTopicsByTag($sTagId, 1,100)); 
		$aTopics = $aResult['collection']; 

		/**
		 * Вызов хуков
		 */
		//$this->Hook_Run('topics_list_show',array('aTopics'=>$aTopics));
		/**
		 * Загружаем переменные в шаблон
		 */
                $oViewer=$this->Viewer_GetLocalViewer();
		$oViewer->Assign('aTopics',$aTopics);
		$this->Viewer_AssignAjax('sText',$oViewer->Fetch("topic_list.tpl"));
Многие интернет-студии в целях оптимизации затрат на разработку сайтов приходят к приобретению готовых решений. Шаблоны интернет магазинапозволяют сэкономить ресурсы не экономя на качестве.

10 комментариев

avatar
Попробуйте, для начала, вставить
$oViewer->VarAssign();
после
$oViewer->Assign('aTopics',$aTopics);

А вообще надо смотреть что там в результате выполнения ajax запроса возвращается через инспектор.
avatar
спасибо за ответ. Посмотрел в инспекторе HTTP/1.1 500 Internal Server Error. причем именно из-за $aTopics. остальные переменные в шаблон передает, если закоментировать $aTopics.Что это может значить?
avatar
Ну тогда вам надо смотреть логи на сервере в ошибках PHP… Тут, в общем-то, особо больше ничего не посоветуешь. Возникает какая-то фатальная ошибка. Еще можно попробовать включить отображение ошибок в EventAjaxSearchByTag —
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);


и посмотреть что будет
avatar
спасибо, буду разбираться
avatar
500 ошибка была косяком браузера.
Сейчас выдает
«ajax error: „
[object Object] “parsererror» [object Error]

может попробовать $aTopics нужно в массив преобразовать?
avatar
Это на консоли браузера выдает? Вам надо открывать вкладку network и смотреть результат выполнения сетевого запроса. У вас хром или фаерфокс?
avatar
firefox.
avatar
ну вот запускаете firebug по f12, открываете вашу страницу, делаете там действия которые приводят к ajax-запросу, потом выбираете в firebug закладку «сеть», там «XHR», потом открываете свой запрос и там вкладку «ответ»

joxi.ru/tSpKU_3JTJD8BqRmnHQ
avatar
слушайте, большое вам спасибо. там был косяк плагина.как только отключил все заработало.
PS теперь правда придется плагин править)).
avatar
Пожалуйста :)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.