За последние 24 часа нас посетили 22414 программистов и 1187 роботов. Сейчас ищут 680 программистов ...

не могу передать данные по ajax в zend framework

Тема в разделе "PHP для новичков", создана пользователем 1Feniks1, 20 ноя 2016.

Метки:
  1. 1Feniks1

    1Feniks1 Активный пользователь

    С нами с:
    27 дек 2013
    Сообщения:
    93
    Симпатии:
    1
    Здравствуйте!
    Не знаю сюда надо писать или куда, но о zend framework я не чего не нашел куда писать..
    Столкнулся с такой проблемой, с php странице отправляю ajax запрос методом get на другой странице я его получаю, проблема в тому, что я не могу с той странице отправить запрос в базу..
    Может кто-то может сказать, что я делаю не так или как нужно сделать это?
    Вот начальный код:
    Код (Javascript):
    1. $(document).ready(function(){
    2.     function funBefore(){
    3.         $("#information").text('Ожидание данные');
    4.     }
    5.     function funcSuccess(data){
    6.         $("#information").html(data);
    7. });
    8.     }
    9.         $("#pagination li").bind("click",function(e){
    10.         e.preventDefault();
    11.     var elem = document.getElementsByClassName('page'), i = elem.length;
    12.     while(i--){
    13.         elem[i].onclick = function(i){}(i);
    14.     }
    15.             jQuery.ajax({
    16.                 url:'/tableBody.php',
    17.                 type:'GET',
    18.                 data:({page: this.id}),
    19.                 dataType:'text',
    20.                 beforeSend:funBefore,
    21.                 success:funcSuccess
    22.             });
    23.         });
    24.     });
    Вот страница для вывода:
    PHP:
    1. <?php
    2. $post=array(
    3.         array('id'=>1,'name'=>'post information name #1','text'=>'document information name or document information post'),
    4.         array('id'=>2,'name'=>'post information name #2','text'=>'document information name or document information post'),
    5.         array('id'=>3,'name'=>'post information name #3','text'=>'document information name or document information post'),
    6.         array('id'=>4,'name'=>'post information name #4','text'=>'document information name or document information post'),
    7.         array('id'=>5,'name'=>'post information name #5','text'=>'document information name or document information post'),
    8.         array('id'=>6,'name'=>'post information name #6','text'=>'document information name or document information post')
    9.     );
    10. ?>
    11. <div style='border:1px solid #e9e9e9;width:50%;margin:0 auto;box-shadow: 0 0 3px #e0e0e0;padding:15px'>
    12. <?php foreach($post as $p):?>
    13.     <?php if($p['id'] == $_GET['page']):?>
    14.         <strong>Name post: <?=$p['name']?></strong> ||ID: <strong><?=$p['id']?></strong>
    15.         <p><?=$p['text']?></p>
    16.         <hr>
    17.     <?php else:?>
    18.         not foreach;
    19.     <?php endif;?>
    20. <?php endforeach;?>
    21. </div>
    Проблема в том, что я не знаю как сделать для zend framework. На простой странице отправлять запрос в базу данных не думаю, что хороша идея и к тому же не думаю, что получиться так сделать за приделами controller,modul...
    Может кто-то помочь как нужно сделать правильно?
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Если пишешь уже на zend framework, то ajax-запрос должен идти на контроллер, а ни куда попало. А там уже, через модели, сервисный слой, идти запрос в базу данных. AJAX-запрос ничем не отличается от любого другого для стороны сервера
     
  3. 1Feniks1

    1Feniks1 Активный пользователь

    С нами с:
    27 дек 2013
    Сообщения:
    93
    Симпатии:
    1
    Я указываю путь к controller но оно его не находит..
    путь указываю с папки: public
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Причём здесь путь к контроллеру, и папка public? ZF, как и любой другой фреймворк, перехватывает на index.php все запросы, и дальше их разбирает, и в итоге находит класс контроллера, и нужный метод. Насколько я помню, хотя мало работал с ZF, там тоже /controller/action идёт маршрутизация дефолтная. А JS, который ты привёл, запрос идёт не к контроллеру, а на некий конкретный PHP-файл.
     
  5. 1Feniks1

    1Feniks1 Активный пользователь

    С нами с:
    27 дек 2013
    Сообщения:
    93
    Симпатии:
    1
    Да я указал конкретный файл.. . Я просто не знаю как указать на контроллер, когда запрос оставляю пустим, то мне показывает страницу повторно.. не могу понять что просто нужно указать в url где будет приниматься запрос..
     
  6. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Ну значит вы нифига не понимаете ZF. Что вы про него читали? У него неплохая документация, в том числе на русском, и куча литературы и по первому и по второму. Надо указать url конкретной акции, которая обработает запрос. https://docs.zendframework.com/tuto...outing-and-controllers/#create-the-controller
     
    askanim нравится это.
  7. 1Feniks1

    1Feniks1 Активный пользователь

    С нами с:
    27 дек 2013
    Сообщения:
    93
    Симпатии:
    1
    Когда я добавляю, urk конкретной акции, то моя страница выводиться дважды..
     
  8. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Так добавляешь, и такой акции :) Создай, в конце концов, отдельную для AJAX
     
  9. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Вот... Ну вот... А ладно. Вы когда делаете запрос через браузер. То указанная ссылка перенаправляется на index.php после чего она маршрутизируется, далее вызывается соответствующий контроллер и соответствующие модели и шаблон. Смотрим далее вы в строке браузера раз вызываете страничку, и при загрузке собственно вашего документа в js ещё раз её вызываете только аякс запросом и вставляете её вашей функцией funcSuccess. А теперь считаем раз и два.
    Вот вам и два раза.
    А ещё что это за порнография... ?) Вы консоль открывали в браузере ?
    У вас вообще скрипт ваш должным образом работает ?
    А теперь найдите одно отличие:
    Код (Javascript):
    1. $(document).ready(function(){
    2.     function funBefore(){
    3.         $("#information").text('Ожидание данные');
    4.     }
    5.     function funcSuccess(data){
    6.         $("#information").html(data);
    7. }
    8. });  
     
  10. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    @1Feniks1, вам просто найти надо, как в Zend Framework отдать вьюху без layout-а (не нашёл пока нормального перевода, макет)
     
  11. 1Feniks1

    1Feniks1 Активный пользователь

    С нами с:
    27 дек 2013
    Сообщения:
    93
    Симпатии:
    1
    <
    Большое спасибо!
    сделал с помощью проверок и работает)))