Yii ajax php - 更新页面内容而无需重新加载

时间:2015-06-03 10:37:28

标签: php ajax yii

我已实施更新并为我的网站创建功能。

我有一个项目页面。在索引页面上,我显示了所有项目,并且有一个创建按钮,用于创建新项目和针对每个项目的更新按钮,以更新特定项目。

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

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

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

以下是我的创建操作的代码段:

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

1 个答案:

答案 0 :(得分:0)

由于OP希望给出合理的解决方案,我给出了这个答案。

第1步:

点击“创建”按钮时,其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替换为你返回的那个..也就是说,它会在你的视图中为你提供更新/新列表而不重新加载< / p>