如何在智能模板中显示json数据?

时间:2013-08-08 16:14:47

标签: php json smarty jsonresult

我在我的网站上使用smarty和php。有一些代码将数据转换为json。我想在智能模板中使用该数据。该数据是一组错误消息,我想在指定的智能模板中以所需的ID显示这些消息。我无法在聪明的模板中得到它。实际上正在发生的是错误消息显示在普通页面而不是所需的标签中。 以下是我的聪明和PHP代码: 以下是我想显示错误消息的智能代码:

if $error_msg}<div class="error-info">{$error_msg.error_msgs}</div>{/if}

以下是我的PHP代码:

<?php
if($request['form_submitted']=='yes') {
                $ret = $objPracticeSheet->InsertPracticeSheet($request, $practice_sheet_error_messages);
                if(!$ret) { 
                    $error_msg  = $objPracticeSheet->GetAllErrors();
                    $data = array();
                    $data['error_message'] = $error_msg['error_msgs'];
                    $data = json_encode($data);
                    echo $data;
                    die;
                } else {
                    $data = array();
                    $data['success_message'] = "success";
                    $data = json_encode($data);
                    echo $data;
                    die;
                }
            } else { 

                $all_subjects = $objSubjectsTopicsQues->GetAllSubjectsHavingTopics();
                $smarty->assign('all_subjects', $all_subjects);
                $smarty->assign('sheet_type', 'practice');
                $bread_crumbs_text = 'Add Practice Sheet';
                $submit_value      = 'Submit';
                $cancel_value      = 'Cancel';
                $file_to_show      = 'manage-practice-sheet.tpl';
            }
$smarty->assign("op", $op);
    $smarty->assign("query_string", $query_string);
    $smarty->assign("bread_crumbs_text", $bread_crumbs_text);
    $smarty->assign("submit_value", $submit_value);
    $smarty->assign("cancel_value", $cancel_value);
  $smarty->assign("error_msg", $error_msg);
  $smarty->assign("file_to_show", $file_to_show);
  /*$smarty->assign('create', '-active');
  $smarty->assign("sub_menu_file", "epn-create-sub-menu.tpl");
  $smarty->assign('practice_sheet', '-active');*/
  $smarty->assign('practice_sheet', 'active');
  $smarty->assign('prepare', 'selected');
  $smarty->display("index.tpl");
?>

你能帮我在上面的div中显示错误消息json数据吗?提前致谢。我还附上当前输出的屏幕截图。enter image description here

1 个答案:

答案 0 :(得分:0)

使用JavaScript解析JSON,然后将错误放在div中。

为了让这更容易,让我们给你的div id

<div id="error-info-main" class="error-info"></div>

然后

<script>
{literal}
(function() {
    var error_json = {/literal}{$error_msg.error_msgs}{literal};
    var errors = JSON.parse(error_json);
    document.getElementById('error-info-main').innerHTML = errors.error_message;
}());
{/literal}
</script>

或者,您可以从PHP传递消息本身:

$smarty->assign("error_msg", $error_msg->error_message);

这可能不是100%正确,因为我没有您要测试的数据,但我认为这是正确的。无论如何,你都能得到这个想法。