0

コントローラー アクションで ajax リクエストへの応答としてパーシャルをレンダリングしたいと思います。私の目標は、ajax リクエストが成功したときにTwitter Bootstrap Alertをエコーすることです。

これが私のアクションです(redigeraLottningAction):

if($this->getRequest()->isXmlHttpRequest()){
    $this->_helper->viewRenderer->setNoRender();
    $this->_helper->layout->disableLayout();
    echo $this->view->partial('partial/alert-ajax.phtml', array('type' => 'success', 'msg' => 'Lyckat! Lottningen är nu sparad.'));
}

そして私の部分(alert-ajax.phtml):

<div id="alert-msg" class="alert alert-<?= $this->type?> fade in">
    <a class="close" data-dismiss="alert" href="#">×</a>
    <p><?= $this->msg?></p>
</div>

問題は、パーシャルの php スクリプトがテキストとして出力されることです。これは、変数がレンダリングされていない状態でブラウザに表示されるものです。

<div id="alert-msg" class="alert alert-<?= $this->type?> fade in">
    <a class="close" data-dismiss="alert" href="#">×</a>
    <p><?= $this->msg?></p>
</div>

そしてjquery部分:

$(document).ready(function(){

    $('#lottning-spara').click(function () {
        $.ajax({
            type: "POST",
            url: '/turnering/redigera-lottning',
            cache: false,
            data: {id: getParam("turnering"), klass_id: getParam("klass"), type: "spara", lottning: $('#lottning_str').val()},
            dataType: 'html',
            success: function(msg){
                $('#alert-div').html(msg);
            },
            error: function(){
                $('#alert-div').html('Error!');
            }
        });
    });
});

部分的なphpがレンダリングされない理由はありますか??

編集は太字です。

問題が解決しました。alert-ajax.phtml ファイルは異なる文字セット タイプでした。

4

2 に答える 2

1

これを試してみるとどうなりますか:

<div id="alert-msg" class="alert alert-<?php echo $this->type; ?> fade in">
<a class="close" data-dismiss="alert" href="#">×</a>
<p><?php echo $this->msg; ?></p>
</div>

if($this->getRequest()->isXmlHttpRequest()){
    $this->view->assign(array('type' => 'success', 'msg' => 'Lyckat! Lottningen är nu sparad.'));
    echo $this->view->render('partial/alert-ajax.phtml');
    exit;
}
于 2012-06-21T12:41:22.387 に答える
0

問題が解決しました。alert-ajax.phtmlファイルの文字セット タイプが異なります。

于 2016-06-16T11:19:26.240 に答える