【问题标题】:Blank screen in codeigniter while running the process运行进程时codeigniter中的空白屏幕
【发布时间】:2018-07-04 02:10:01
【问题描述】:

我正在使用 codeigniter 框架开发一个 php 脚本。我的脚本在脚本开头执行繁重的数据加载过程。我使用了 gif 来避免在完成后端过程之前为用户显示空白屏幕。但是,我注意到我在视图中使用的 gif 在所有其他进程完成之前不会显示,这是无用的。

在其他进程完成之前,我是否可以运行预加载屏幕?如果是这样,我该怎么做?

我尝试在顶部添加包含 gif 的页面(在运行所有其他进程之前)但仍然没有运气,它只加载所有其他视图。

提前致谢

我的代码如下,

脚本

 <script>
        $(window).load(function() {
        //alert("IN");
        $.ajax({
        method :'GET',
        url: baseUrl+'main/LoadAllitems',
        //type: "GET",
        success:function(data){
        $('.se-pre-con').hide();
        $('#renderer').html(data);
        },
        error:function (){}
        });
    });
    </script>

控制器

public function LoadAllitems()
	{

		$MenuData['searches']=$this->get_search_form_data();
		$MenuData['dailydeals']=$this->get_daily_deals_data();
		//$MenuData['monthlydeals']=$this->get_monthly_deals_data();
		//$MenuData['featuredproducts']=$this->get_featured_products_data();

		$response=$this->load->view('includes/search',$MenuData,TRUE);
		echo $response;
		$response2=$this->load->view('homepage/dailydeals',$MenuData);
		echo $response2;
		//$this->load->view('homepage/mainslider',$MenuData);
		//$this->load->view('homepage/monthlydeals',$MenuData);
		//$this->load->view('homepage/feature',$MenuData);
		//$this->load->view('homepage/subscribe',$MenuData);
		//$this->load->view('main',$MenuData);

	}

索引

public function index()
	{
    $this->load->view('main',$MenuData);
  }

【问题讨论】:

标签: javascript php codeigniter loading


【解决方案1】:

最初使用 gif 加载页面,然后在页面加载时加载。运行一个脚本,请求一个 ajax 调用来请求你需要的数据。顺便说一句,如果您提供代码,我们可以提供更多帮助:视图和控制器。

SampleController.php

function index()
{
   $this->load->view('init_view');
}

function ajax_load_data()
{
   ...
   $response = $this->load->view('some_view',$data,TRUE);
   echo $response;
}

init_view.php

<div id="loading">SOMEGIF</div>
<div id="renderer"></div>

<script>

 $(document).ready(function(){
         $.ajax({
             method : 'get',
             url    : '<?php echo site_url("samplecontroller/ajax_load_data");?>'
             success: function(responce){
                    $('#loading').hide();
                    $('#renderer').html(responce);
                 }   
         })

   })

</script>

some_view.php

<h1><?= $title ?></h1>
<p><?= $intro ?></p>

【讨论】:

  • @reyenz :感谢您的回答。我的所有视图加载函数都在控件索引函数内。目前我正在加载页面时将它们全部加载。所以根据您的解决方案,我可以将所有这些视图添加到另一个函数并通过 ajax 调用该函数吗?请参考我的代码:stackoverflow.com/a/51152623/9407925
  • 基本上,您对 Controller:index 有初始视图,然后在加载后执行 ajax 调用,如我的答案所示。从您调用 Controller:anotherMethod 的 ajax。 anotherMethod 有一个单独的视图来接收数据。我会更新我的答案以帮助您更多。
  • 好的,我会按照你的建议尝试,但还有一个问题 "$response = $this->load->view('some_view',$data,TRUE); echo $response;"而不是这样做不能我只是在 ajax_load_data()>>$this->load->view('some_view',$data);如果不能,请告诉我为什么?非常感谢
  • 这是因为您将视图作为字符串传递给变量,您将在其中传递 ajax 调用。
  • 哦,好的,谢谢,让我试试这个然后回复你:)
猜你喜欢
  • 2021-09-03
  • 1970-01-01
  • 1970-01-01
  • 2015-05-02
  • 1970-01-01
  • 1970-01-01
  • 2016-09-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多