【问题标题】:How to load article without page reloading in Yii & Ajax如何在 Yii 和 Ajax 中加载文章而不重新加载页面
【发布时间】:2016-03-02 05:53:07
【问题描述】:

我有一个查看数据库中的文章,并且每个文章视图都带有漏洞页面加载。所以我会在不重新加载页面的情况下加载文章,我认为使用 Ajax 可以做到这一点,但我对此并不那么强烈。

这是我最初的概念,如下所示:

布局:

CHtml::link($menu['items'][$itemId]['label'],
   array('articles/view',
   'id'=>$menu['items'][$itemId]['link'],
  )
);

// This showing articles name & link

查看:

<?php
    echo $model->article_body;
?>

<script>
   jQuery.ajax({
     type: 'POST',
     dataType: 'html',
     url: ('articles/view'),
     success: function(data){
         document.getElementById('articles').innerHTML = data;
     },
     error: function(){
        alert('Somthing wrong');
     }
   });
</script>

控制器:

public function actionView($id)
{
  $model=$this->loadModel($id);
   $this->render('view',array('model' => $model));
}

有人可以帮助我吗?谢谢

【问题讨论】:

    标签: javascript php jquery ajax yii


    【解决方案1】:

    如果我理解正确的话,

    在你的视图文件中是这样的。

     echo CHtml::link($menu['items'][$itemId]['label'],
           array('articles/view',
           'id'=>$menu['items'][$itemId]['link'],
          ),array('class'=>'youclassnamehere')
        );
     echo '<div  id="yourDivId"></div>';
    

    在 javascript 中,您的代码应该类似于例如

      $(".youclassnamehere").click(function(){
             $.ajax({
              type:'POST',
             url:$(this).attr('href'),
             success:function(data){
               $("#yourDivId").html(data);
             }
             error:function(data){
              alert('Error occured please try again later..');
             }
        }),
       return false;//this will not redirect your page
    });
    

    在控制器操作中,您的代码例如

     public function actionView($id)
    {
      $model=$this->loadModel($id);
       $this->render('view',array('model' => $model));
    }
    

    希望对你有帮助

    【讨论】:

    • Virendra Gawade 你很棒,但我新添加了一些代码找到答案谢谢
    【解决方案2】:

    你必须返回json:

    public function actionView($id)
    {
      $model=$this->loadModel($id);
      ...
    
                    echo CJSON::encode(
                        array(
                            'status' => 'success',
                            'content' => $this->renderPartial('view',
                                array(
                                    'model' => $model,
                                ),
                                true,
                                true
                            ),
                        )
                    );
    }
    

    【讨论】:

      【解决方案3】:

      我从上面的答案中找到了解决方案,但我新添加如下:

      array(
         'onclick'=>'javascript:return false'
      )
      

      【讨论】:

        猜你喜欢
        • 2018-08-26
        • 1970-01-01
        • 1970-01-01
        • 2014-09-06
        • 2015-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多