使用php和smarty在同一页面上显示表单结果

时间:2013-10-03 06:40:00

标签: javascript php jquery forms smarty

我的网络应用已整合到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代码(如果我使用submit方法):

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

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

非常感谢任何帮助。谢谢

1 个答案:

答案 0 :(得分:0)

我会使用jQuery创建一个Ajax请求:

$(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);
            });
    });

});

如果是我,我会让后端返回JSON数据而不是HTML,我会在Ajax回调中动态构建HTML。

此外,这种情况是我更喜欢在后端使用MVC架构的众多原因之一。例如,如果您正在使用像CodeIgniter这样的MVC框架,那么您要发布数据的URL将像这样处理路由:

MVC风格的网址 ='mycontroller / mymethod / myparam'。

在这个例子中,mycontroller将是你正在调用的类(脚本),mymethod将是你想在控制器中调用的特定函数,myparam将是你传递给该函数的数据。