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


Display form result on same page using php with 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代码检索所选组的成员列表(如果我使用提交方法):

<?php
$groupId = $_POST['group'];
$groupmember = $facebook->api('/'.$groupId.'/members');
$membergroup = $groupmember['data'];
foreach ($membergroup as $membergroups) {
    echo "<li>".$membergroups['name']."</li>";      
}
?>

任何帮助将不胜感激。谢谢

我会使用 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 体系结构的众多原因之一。如果您使用的是 MVC 框架,例如 CodeIgniter,则您发布数据的 URL 将像这样处理路由:

MVC 样式的 URL = 'mycontroller/mymethod/myparam'。

在此示例中,mycontroller 是您正在调用的类(脚本),mymethod 是您要在控制器中调用的特定函数,myparam 是您传递给该函数的数据。