ajax - 什么是renderAjax(),它与render()有何不同?

标签 ajax yii2

当我使用普通的return this->render('create', ['model' => $model])时,我的弹出式窗口会一团糟。当我更改为return $this->renderAjax('create', ['model' => $model]);时,一切都神奇地放在了正确的位置。我到处逛逛了很多,以了解有关renderAjax()的信息,但似乎绝对没有。有人可以告诉我它做什么吗?我知道Ajax,但据我所知,它通常与CSS或Bootstrap无关。

最佳答案

首先要了解render()renderAjax()之间的区别,您需要了解render()的工作原理。

基本上,当调用render()时,每段JS和CSS代码以及在 View 中注册的文件引用都收集在多个数组中,以供稍后在适当的位置呈现-这些位置存储在布局中,并且通过调用beginPage()head()呈现其代码,beginBody()endBody()endPage()

您可以通过在相关方法中设置第二个参数来指出应在何处呈现JS代码,例如:

$this->registerJs("alert()", \yii\web\View::POS_HEAD);

渲染
<script type="text/javascript">alert()</script>

在布局中$this->head()方法所在的位置。

一切工作正常,直到您只想渲染 View 的主要部分而没有布局。没有它(及其方法,如beginPage()),就无法以以前的方式呈现JS和CSS引用,这就是为什么这个花哨的jQuery代码旋转正方形不起作用的原因-那里没有包含JS库。

当您从 View 内调用$this->render() 时,或仅从 Controller 调用$this->renderPartial()时,确实发生了这种情况-不应用布局。

renderAjax()现在可以进行救援。

此方法不关心布局,因为它本身会调用beginPage()head()beginBody()endBody()endPage()方法。因此,每个JS代码段都可以附加到呈现的 View 上,并且即使需要在AJAX弹出窗口中完成,jQuery库也可以再次旋转该正方形。

关于ajax - 什么是renderAjax(),它与render()有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43045365/

相关文章:

javascript - 如何将一个html文件的内容及其所有脚本和样式加载到另一个html文件中?

php - 实时更新 ajax 图表

jquery - 简单的 JQuery Ajax 帖子

javascript - Laravel 中通过 Ajax 上传文件

javascript - 单击按钮时如何增加按钮ID

security - 如何生成 yii2 验证码和验证码而不需要任何文字?

asp.net - 显示进度时删除按钮

Yii2 不是唯一的表/别名 : 'user'

elasticsearch - 如何从elasticsearch元素中选择与数组值完全匹配的元素?

yii2 - 如何在 yii2 中制作图像作为提交按钮