是更好地使用php的视图或include来在Codeigniter中使用弹出窗口



我是Codeigniter的新手,我的问题是:我有一个引导页面,里面有一个按钮,点击这个按钮,从javascript中我调用ajax从数据库中检索一些数据。这些数据应该显示在弹出窗口的div中。到目前为止,我的方法是使用php的"include"在主页中包含一个带有弹出菜单html的页面(php),从javascript通过ajax调用将数据放在div中,并使用$('#myPopup').modal('show')显示,但我不确定这是否是最好的方法。另一种方法是用弹出窗口的html创建一个视图,从javascript我做一个ajax调用到我的控制器中从数据库检索数据并加载视图的方法,这种方法的问题是,在ajax调用成功的部分,我有整个弹出窗口的html,所以如果我把它放在主体之前,每次按下按钮,它都会在页面末尾添加一个新的弹出窗口。

jQuery.ajax({
type: "POST",
url: "controller/get_informations",
success: function(res) 
{   
if (res)
{
// with second approach in res I have code of entire html
$('#popConfiguration').modal('show');
}
},
error: function(xhr, status, error) {
alert(xhr.responseText);
}
});

假设将来我可以有其他7-8个弹出窗口,最好的方法是什么?我认为把所有弹出窗口都放在主页上不是最好的感谢

这一切都取决于情况。你必须多久打开一次模态(并调用服务器)?谁是你网站的目标?你预计会有多少流量?

也就是说,如果你的目标是整个世界,并且你预计会有很多流量或很多模式开放,那么优化这些事情可能是至关重要的。从这个意义上说,每次要求服务器为您提供模板样式都是浪费资源。否则,它可能是无害的。

我看到三个选项:

选项1

  1. 页面加载时加载的模板
  2. AJaX获取JSON
  3. 更新模板上的值并显示

选项2

  1. 模态显示上加载的模板
  2. AJaX获取HTML
  3. 更新模态并显示

选项3

  1. 第一次模态显示时加载的模板(将模板存储为变量)
  2. AJaX获取JSON
  3. 更新模板上的值并显示

前两个选项是您提到的选项。第三种选择是使用两种不同AJaX进行内容和模板获取的混合。模板是在用户第一次打开模态时提取的,并存储在变量中以供以后使用。内容以JSON形式从服务器返回,用于在向用户显示模板之前更新模板。

您可以在主页中添加所有7-8个弹出窗口,只需替换来自控制器的数据

如果您有多个模式,将所有弹出窗口放入模板中不是一个好方法,因为这会增加页面加载时间。

最好的方法是使用ajax加载弹出窗口内容。如果不希望在每次模式打开时加载相同的数据,您可以缓存ajax弹出窗口加载的数据@里夫基的回答显示了基本的解决方案。

要将html数据加载到div中,最好的方法是使用GET而不是POST。通过这种方式,您可以使用第二种方法(使用视图并从控制器将其作为html返回)将html加载到模型中的内部div,然后在load call_back function中显示模态。

html

<div id="modal-popup" class="modal fade" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content" id="detail-section">
</div>
</div>
</div>

js

$('#detail-section').load(your_url_to_controller, function(){
$('#modal-popup').modal();
});

相关内容

最新更新