Показать результат формы на той же странице, используя php с smarty

0

Мое веб-приложение интегрировано в facebook. Я создал форму в tpl файле, имея только один вход, который выбирает вход. Пользователь должен выбрать одну из своих групп facebook. value опции - id каждой группы.

Так вот что я хотел бы сделать:

Когда пользователь меняет параметр (onchange), список членов выбранной группы будет отображаться ниже, select div. Я не знаю, что я должен использовать (javascript, jquery, ajax и т.д.) И как реализовать его в моем коде.

Вот мой фрагмент кода:

 {* --- form in tpl file --- *}
   <form method="post">
    <fieldset>
     <div class="row">
         <p style="font-weight:bold;">Choose your facebook group :</p>
     </div>
     <div class="row">
         <select name="group" onchange="idontknow">
             {foreach from=$userGroupsData item=group}
                <option value="{$group.id}">{$group.name}</option>
             {/foreach}
         </select>
     </div>
     <div class="row">
             {* the place where members list will appear *}
     </div>
    </fieldset>
   </form>

PHP-код для извлечения списка участников выбранной группы (если я использую метод отправки):

<?php
$groupId = $_POST['group'];
$groupmember = $facebook->api('/'.$groupId.'/members');
$membergroup = $groupmember['data'];

foreach ($membergroup as $membergroups) {
    echo "<li>".$membergroups['name']."</li>";      
}
?>

Любая помощь будет принята с благодарностью. спасибо

Теги:
forms
smarty

1 ответ

0
Лучший ответ

Я бы сделал запрос Ajax с помощью jQuery:

$(function() {

    $('body').on('change', 'select[name="group"]', function() {

        var groupId = $(this).val();

        $.post('path/to/your/script', groupId)
            .done(function(data) {
                $('form .row').html(data);
            });
    });

});

Если бы это был я, я бы использовал back-back данные JSON вместо HTML, и я бы динамически построил HTML-код в обратном вызове Ajax.

Кроме того, этот сценарий является одной из многих причин, по которым я предпочитаю использовать архитектуру MVC на сервере. Если вы использовали инфраструктуру MVC, например, например CodeIgniter, URL-адрес, по которому вы отправляете данные, будет заботиться о маршрутизации следующим образом:

URL-адрес в стиле MVC= 'mycontroller/mymethod/myparam'.

В этом примере mycontroller будет классом (сценарием), который вы вызываете, mymethod будет конкретной функцией, которую вы хотите вызвать в контроллере, а myparam - это данные, которые вы передаете этой функции.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню