ajax无需重新加载即可更新页面内容


Yii ajax updating the page content without reloading

我已经为我的网站实现了更新和创建功能。

我有一个物品页面。在索引页上,我显示了所有项目,并且有一个创建按钮用于创建新项目,每个项目都有一个更新按钮用于更新特定项目。

创建和更新表单使用ajax调用显示在索引页上的项列表下面,我调用actionUpdate和actionCreate并使用renderPartial呈现索引页上的表单。

如果更新或创建成功,则重新加载索引页。

我不想重载整个页面,而只想重载项目列表。

下面是我的create动作的代码片段:

public function actionCreate() {
   $model = new Item();
   if( $model->load( Yii::$app->request->post() ) && $model->save() )
   {
      $items= Item::find()->all();
      return $this->redirect(['index', 'items' => $items]);
      exit;
   }  
   return $this->renderPartial('createUpdate', ['item' => $model, 'title' => "Create item" ]); 
}

有办法做到这一点吗?

nishi

作为OP想要给出逻辑解决方案,我给出了这个答案。

第一步:

在单击Create Button时,将id设置为trigger,并在视图中使用以下脚本。

<script>
$(document).ready(function(){
$("#trigger").click(function(){
$.ajax({url: "actionCreate", success: function(result){
$("#result").html(result);
}});
});
});
</script>

当你点击创建按钮时,它会调用actionCreate函数

步骤2:

根据你的控制器,它会创建条目,这里你会返回更新后的列表作为表本身。

。,你可以获取表作为一个变量,做一个foreach内部和建立一个表在控制器本身,并返回给视图。

并根据这一行在jquery $("#result").html(result);它将替换div result与你返回的一个。也就是说,它会在不重新加载

的情况下在视图中给你更新过的/新的列表