0 Пользователей и 1 Гость просматривают эту тему.
  • 16 Ответов
  • 4063 Просмотров
*

olejenya

  • Захожу иногда
  • 218
  • 3 / 0
Component+Ajax+json
« : 18.09.2013, 15:53:18 »
Привет всем. Помогите разобраться в структуре и как что правильно подключить.
У меня есть страница категорий из нее я передаю ID товара
Спойлер
[свернуть]
Почитав про компоненты и AJAX я в контролере добавил  код каторый мне надо для записи в сесию и вывода сообщений .
Спойлер
[свернуть]
и собственно сам скрипт которым я хотел это реализовать.
Спойлер
[свернуть]
Но вот когда я проверяю запрос у фаербаге, то вкладка JSON не появляеться и страница пустая ниче не передаеться.Что я не так делаю ?Куда рыть дальше?
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
Re: Component+Ajax+json
« Ответ #1 : 18.09.2013, 16:39:43 »
1. Зачем сессию стартовать не понятно, она и так стартуется при инициализации приложения.
2. В конце метода контроллера должен быть die(json_encode($json));
3. Из ссылки убрать '&format=raw'
4. Не надо ни на какие вкладки смотреть, надо смотреть ответ, который приходит на запрос. Вкладка консоль.

*

olejenya

  • Захожу иногда
  • 218
  • 3 / 0
Re: Component+Ajax+json
« Ответ #2 : 18.09.2013, 17:07:56 »
1. Зачем сессию стартовать не понятно, она и так стартуется при инициализации приложения.
2. В конце метода контроллера должен быть die(json_encode($json));
3. Из ссылки убрать '&format=raw'
4. Не надо ни на какие вкладки смотреть, надо смотреть ответ, который приходит на запрос. Вкладка консоль.


Спасибо.
1.убрал.
2.заменил.
3.Убрал
4.Ответа не было.Поменял конструкцию на такую
Спойлер
[свернуть]
То сечас записывает в сесию переменные.Вопрос как мне вывести сообщения, типа что товар уже добавлен или успешно добавлен?
-----
пытаюсь написать правильные условия .

-------------
спасибо за подсказки.Все кажеться работает.Особо не тестил.но AJAX отправляет сообщения проверок возвращает, в сесию записываться.Вот код.Мб что то Неправильно и надо подредактировать?
Спойлер
[свернуть]
Хочу сразу спросить за такую же реализацию токо в модуле?Как в нем обновить?Там уже сразу будет выводиться сесия.Так как сообщения и проверка берет на себя компонент .Дайте ссылочку полезную)
« Последнее редактирование: 18.09.2013, 18:08:58 от olejenya »
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Component+Ajax+json
« Ответ #3 : 18.09.2013, 19:52:07 »
у вас неправильна логика, вы должны отдавать не строку а JSON
например
Код: php
public function add() {
  if ((!in_array($_POST['product_id'], $_SESSION['ids'])) && (count($_SESSION['ids'])<= 3) )
    $this->showJSON(true, 'Tovar bul uspeshno dobavlen');
  } else {
         if (!in_array($_POST['product_id'], $_SESSION['ids'])) {
              $this->showJSON(false,'Limit tovarov dlya sravneniya ravno 4');
            }else {
               $this->showJSON(false, 'Etot tovar bul dobavlen ranie');
            }           
      }
}

public function showJSON($result, $message=''){
echo json_encode(array('result'=>$result, 'message'=>$message));
exit;
}

и JavaScript
Код: javascript
function addToCompare(product_id) { 
$.getJson('index.php?option=com_compare&task=add&product_id=' + product_id, function(json){
if(json.result){
//выполняем что то если действия успешны
}
else{
//выполняем что то если действия неудачны
}
alert(json.message)
});
}
*

olejenya

  • Захожу иногда
  • 218
  • 3 / 0
Re: Component+Ajax+json
« Ответ #4 : 18.09.2013, 22:32:00 »
у вас неправильна логика, вы должны отдавать не строку а JSON
например
Код: php
public function add() {
  if ((!in_array($_POST['product_id'], $_SESSION['ids'])) && (count($_SESSION['ids'])<= 3) )
    $this->showJSON(true, 'Tovar bul uspeshno dobavlen');
  } else {
         if (!in_array($_POST['product_id'], $_SESSION['ids'])) {
              $this->showJSON(false,'Limit tovarov dlya sravneniya ravno 4');
            }else {
               $this->showJSON(false, 'Etot tovar bul dobavlen ranie');
            }           
      }
}

public function showJSON($result, $message=''){
echo json_encode(array('result'=>$result, 'message'=>$message));
exit;
}

и JavaScript
Код: javascript
function addToCompare(product_id) { 
$.getJson('index.php?option=com_compare&task=add&product_id=' + product_id, function(json){
if(json.result){
//выполняем что то если действия успешны
}
else{
//выполняем что то если действия неудачны
}
alert(json.message)
});
}
Спасибо большое.Это как раз то что я и хотел изначально.Но не понимал как джейсон задействовать.Сейчас буду пробовать.И можно сразу вопрос.Если мне кроме меседжа надо вывести например тайтл, как это сделать?
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Component+Ajax+json
« Ответ #5 : 18.09.2013, 22:55:45 »
Спасибо большое.Это как раз то что я и хотел изначально.Но не понимал как джейсон задействовать.Сейчас буду пробовать.И можно сразу вопрос.Если мне кроме меседжа надо вывести например тайтл, как это сделать?
всего лишь добавляете новую переменную, например:
Код: php
public function showJSON($result, $message='', $title=''){
echo json_encode(array('result'=>$result, 'message'=>$message, 'title'=>$title));
exit;
}
тоесть по сути вам надо сформировать асоциированный массив который вы прогоните через json_encode b отдадите (просто ради интереса в строке браузера введите
yoursite.com/index.php?option=com_compare&task=add&product_id=1 и посмотрите что там выводит )

а дальше в скрипте $.getJson('index.php?option=com_compare&task=add&product_id=' + product_id, function(json){alert(json.tille})
тоесть json точка и ключ из массива который вы отдали скриптом )
*

olejenya

  • Захожу иногда
  • 218
  • 3 / 0
Re: Component+Ajax+json
« Ответ #6 : 18.09.2013, 22:59:01 »
Спасибо.2 дня гуглил, сегодня решил написать на форуме и вот оно счастье))А то я принимаю HTML, а без json_encode передает весь HTML.Но теперь как бы все ясно, ща буду переписывать и вникать, что бы отложилось в макушке))
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Component+Ajax+json
« Ответ #7 : 18.09.2013, 23:02:15 »
Спасибо.2 дня гуглил, сегодня решил написать на форуме и вот оно счастье))А то я принимаю HTML, а без json_encode передает весь HTML.Но теперь как бы все ясно, ща буду переписывать и вникать, что бы отложилось в макушке))
незачто, вы там про модуль спрашивали выше вроде, так что бы из модуля AJAX послать вам нужно будет к компоненту стучаться (точно так же как и из компонента) либо в плагин!
*

olejenya

  • Захожу иногда
  • 218
  • 3 / 0
Re: Component+Ajax+json
« Ответ #8 : 18.09.2013, 23:23:13 »
незачто, вы там про модуль спрашивали выше вроде, так что бы из модуля AJAX послать вам нужно будет к компоненту стучаться (точно так же как и из компонента) либо в плагин!
Нет мне не из модуля послать.А наобороть в модуль и без перезагрузки обновлять.Если выводить те самые продукты из сесии.
Ваш скрипт показывает ошибку, а мой категорчески не хочет выводить JASON, но в ответах он есть.
Ваша ошибка в скрипте
ypeError: jQuery.getJson is not a function

-------
все работает.Еще раз спасибо.Вопрос.Я теперь  в шаблоне могу из сесии спокойно вытягивать все что мне надо?Это правильно?Тему не закрываю))Еще есть моудль и вывод самого щаблона в котором надо будет удлять из сесии и обновлять или скрывать ID.
« Последнее редактирование: 18.09.2013, 23:35:15 от olejenya »
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Component+Ajax+json
« Ответ #9 : 19.09.2013, 00:29:55 »
все работает.Еще раз спасибо.Вопрос.Я теперь  в шаблоне могу из сесии спокойно вытягивать все что мне надо?Это правильно?Тему не закрываю))Еще есть моудль и вывод самого щаблона в котором надо будет удлять из сесии и обновлять или скрывать ID.
Да вы можете вытягивать из сессии данные где вам угодно )
а модуль вам не обязательно же весь обновлять, допустим у вас есть строка в модуле:
<div class="cart-info">В вашей корзине товаров: <strong>10</strong> на сумму <span>2000</span>руб.</div>
никто же вам не мешает в json сформировать данные в виде строки array('message'=>'lala', 'result'=>$result, 'module'=>'<strong>11</strong> на сумму <span>2200</span>руб.')
а дальше как получите данные банально:
$('.cart-info').html(json.module);
*

olejenya

  • Захожу иногда
  • 218
  • 3 / 0
Re: Component+Ajax+json
« Ответ #10 : 20.09.2013, 16:59:54 »
Столкнулся с такой проблемой как вывод картинки в модуль.Притом я пытаюсь передать путь к картинки.Но что то ничего не получается.Помогите пожалуйста))
понял сам свои ошибки))
« Последнее редактирование: 20.09.2013, 18:04:09 от olejenya »
*

olejenya

  • Захожу иногда
  • 218
  • 3 / 0
Re: Component+Ajax+json
« Ответ #11 : 24.09.2013, 23:20:22 »
Привет Istaan .Спасибо за помощь с компонентом и модулем все работает.Теперь вот хочу обратно побаловаться аяксом и решением проблемы как быстрый просмотр.
1.Пытался сделать штатными средствами Joomla.Возвращает в айфрейме и все скрипты почему то перестают работать.В плагинах фенсибокс все тоже.
2.Решил сделать это через компонент.Но мне надо возвращать много инфы и плюс постройка через условия выводы циклы.и как потом все запихнуть в переменную и вывести?Мб это и Неправильно?
Вопрос можно по такой методики как с джейсоном только вывести уже в штмл?
То есть я сделаю разметку, по вывожу все что мне надо и при аяксе возвращаю на страницу категорий этот штмл в виде быстрого просмотра?И сразу вопрос.Как быть со скриптами?Их при аяксе надо как то обновлять?
3.Потом решил попытаться вывести через плагин.Создал поагин, в нем файлик AJAX.В скрипте указал путь  к файлику.Проверил выводит ли штмл.Все вывело.Потом когда попытался через PHP выводить.ТО все пустая страница.Как праильно надо ?Посоветуйте))
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Component+Ajax+json
« Ответ #12 : 25.09.2013, 22:41:12 »
olejenya - создайте отдельную тему, не надо все в одной спрашивать.
*

olejenya

  • Захожу иногда
  • 218
  • 3 / 0
Re: Component+Ajax+json
« Ответ #13 : 25.09.2013, 23:03:39 »
olejenya - создайте отдельную тему, не надо все в одной спрашивать.
Та я уже их по на создавал и нигде ответа нет((Даже у вас на блоге запись сделал))
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Component+Ajax+json
« Ответ #14 : 25.09.2013, 23:11:29 »
Ну значит никто не знает ответа, а кто знает еще не прочитал тему.
*

olejenya

  • Захожу иногда
  • 218
  • 3 / 0
Re: Component+Ajax+json
« Ответ #15 : 03.02.2015, 22:01:52 »
Привет еще раз, появилась проблема с возвратом контента.
В общем думал все работает норм.Но когда в описание вставляешь картинку, то при обработке аяксом, выдает ошибку :
Путь не найден "
и возвращает картинку
<img src="images/joomla_black.gif" alt="" />
Понтяно, что путь не найден из за index.php/en/ , почему обращение идет к картинке вот именно с таким путем??И как сделать правильно и нормально

Код
jQuery.ajax({
url: 'index.php?action=test',
type: 'get',
data: 'product_id=' + product_id,
success: function (data) {
                    jQuery('#quick_view_popup').html(data);
}
сам плагин

public function onAfterRender(){
if (!defined('DS')) define('DS', DIRECTORY_SEPARATOR);

$input = JFactory::getApplication()->input;
if($input->getCmd('action')!== 'test'){
return;
}
$region = $input->getInt('product_id', 0);
if ($region) {
                  код возвращает, вывожу переменуую контента
               }
}

*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Component+Ajax+json
« Ответ #16 : 04.02.2015, 00:34:42 »
<img src="<?php echo JUri::base(); ?>images/joomla_black.gif" alt="" />
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как закрыть страницу сайт/index.php/component/users/?view=registration?

Автор alentero

Ответов: 6
Просмотров: 10296
Последний ответ 07.11.2015, 00:02:16
от Vol^T
Создание поиска c json ответом

Автор OmniWizard

Ответов: 8
Просмотров: 1265
Последний ответ 16.12.2013, 21:09:35
от OmniWizard
Красивая подсказка с помощью hasTip + AJAX

Автор Aeliot

Ответов: 7
Просмотров: 1256
Последний ответ 07.11.2013, 16:43:15
от Aeliot
Использование AJAX в Joomla 2.5/3.0

Автор platonische

Ответов: 2
Просмотров: 5023
Последний ответ 28.05.2013, 01:27:50
от platonische
AJAX и Joomla

Автор skyer

Ответов: 31
Просмотров: 6498
Последний ответ 22.11.2011, 01:08:43
от skyer