Не открыть страницу в аяксе

#1 26 марта 2015 в 14:18
Здравствуйте. 1.10.6. Собрался вывести подразделы в каталоге статей в аякс-окне и что то не хочет работать. Делал так.
1.Создал в компоненте страницу куда выводятся подразделы и подключил аякс.
  1. if ($do=='parent'){
  2. if($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') { cmsCore::halt(); }
  3. .........................
  4. cmsCore::jsonOutput(array('error' => false, 'html' => ob_get_clean()));
  5. }
2. В модуле "разделы статей" ссылка на на данную страницу
  1. <a data-title="" href="javascript:void(0)" onclick="parent.listCat('{$cat.url}','{$cat.id}', '{$cat.title}');return false;"><img class="" src="/templates/gallery/image/zoom3.png" alt=""></a>
Простая(не аяксовская) ссылка имеет такой вид
  1. <a class="gallery-block" href="{$cat.url}-{$cat.id}.html" data-title="">
  2. <img class="" src="/templates/gallery/image/zoom3.png" alt=""></a>
3.Функция
  1. $(function(){
  2. parent = {
  3. listCat: function(cat_url, cat_id, cat_title) {
  4. core.message(cat_title);
  5. $.post('/' +cat_url+ '-' +cat_id+ '.html', {}, function(data){
  6. if(data.error == false){
  7. core.alert(LANG_NO_CAT, LANG_ERROR);
  8. }
  9. }, 'json');
  10. }
  11. }
  12. });
Без аякса страница открывается. С аяксом только само окно c постоянным "прогрессом" и передаётся переменная $cat.title, а сама ссылка непередаётся получается что ли scratchПодскажите, что не так?
#2 26 марта 2015 в 19:12
я не вижу в вашем аяксе url скрипта, который будет принимать данные на сервере (он должен иметь расширение *.php, иначе как он получит суперглобальный массив $_SERVER?), а так же не вижу данных. на месте данных у вас пустое место ваще. Что вы там пытаетесь передать и куда — вообще неясно. Данные у вас в строке get, а зачем тогда post? Одни несуразицы в вашем коде.

И если уж будете писать серверный скрипт, нафига получать данные прямо из $_SERVER или $_POST? Подключите ядро Инстанта и получайте все данные через него — в ядре все защитные механизмы уже есть.
#3 26 марта 2015 в 20:36

я не вижу в вашем аяксе url скрипта, который будет принимать данные на сервере

Странник
Это этот скрипт /core/ajax/ajax_core.php?
#4 26 марта 2015 в 20:49
да нет же. это скрипт — приемник данных, который Вы пишете сами.
если нет приемника, нафига затевать возню с аяксом? аякс на странице как раз и служит для обмена данными с сервером через этот приемник.
Где вы его поместите — личное Ваше дело, но обычно его помещают рядом с фронтэндом в папке ajax. посмотрите для примера в тех компонентах, где он используется. в компоненте board, например.
и, естественно, в аяксе следует прописать путь к этому приемнику. а данные передавать проще в виде json (имхо, конечно).
#5 26 марта 2015 в 21:26
Понятно, что недоучил, пойду разбираться. Сенкс. smile
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.