我有一个来自数据库的查看文章,并且每个文章 View 都有空页面加载。所以我会在不重新加载页面的情况下加载文章,我认为使用 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>
Controller :
public function actionView($id)
{
$model=$this->loadModel($id);
$this->render('view',array('model' => $model));
}
有人可以帮助我吗?谢谢
最佳答案
如果我理解正确的话,
在你的 View 文件中是这样的。
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
});
在 Controller 操作中,您的代码例如
public function actionView($id)
{
$model=$this->loadModel($id);
$this->render('view',array('model' => $model));
}
希望这对你有帮助
关于javascript - 如何在 Yii 和 Ajax 中加载文章而不重新加载页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35739506/