2014-06-13 84 views
0

我想知道是否有一種方法只在文檔準備好時才加載腳本的一部分,我的意思是當所有的css,js和圖像都被下載時運行php腳本有點沉重。在jquery文檔上準備運行php腳本

在PHP我知道,可以使用一個如果其他但在jQuery上?

可以是:?

 <script> 
     jQuery(document).ready(function($) { 
     </script> 
     <?php 
     $script = $this->getAllItems(); 
     ?> 
     <script> 
     }); 
      </script> 



    <div class="page"> 
      <?php echo $this->getChildHtml('header'); ?> 
      <div class="main-container col2-left-layout"> 
       <div class="main container_16 clearfix"> 
        <div class="col-main grid_16"> 
         <?php echo $this->getChildHtml('top_callout'); ?> 
        </div> 
        <div class="col-main grid_16"> 
         <?php echo $this->getChildHtml('breadcrumbs'); ?> 
        </div> 
        <div class="col-main grid_12"> 
         <?php echo $this->getChildHtml('global_messages'); ?> 


on document ready call content 
         <?php echo $this->getChildHtml('content'); ?> 



        </div> 
        <div class="col-left sidebar grid_4"><?php echo $this->getChildHtml('left'); ?></div> 
       </div> 
      </div> 
      <?php echo $this->getChildHtml('footer'); ?> 
      <?php echo $this->getChildHtml('before_body_end'); ?> 
     </div> 

任何幫助表示讚賞!

回答

4

我覺得有語言混淆。 PHP是服務器端語言。當原始數據源觸及您的瀏覽器時,它已經運行並完成。 JavaScript另一方面是客戶端解析並呈現在瀏覽器中。

如果您需要在加載頁面後運行PHP腳本,則需要使用AJAX。你必須做的是這樣的情況如下:

$(window).load(function() { 
    $.ajax({ 
     url: "some-php-script.php", 
     data: { ... } // data to send to php if applicable, 
     ... // other options that may be needed 
     success: function (res) { 
      ... // handle successful return of data (if applicable) 
     } 
     error: function (res) { 
      ... // handle error if appropriate 
     } 
    }); 
}); 

參考:.ajax()

編輯:

通過user3553931

建議既然你想等待所有樣式表,腳本和圖像加載,我更新了我的答案以使用load事件而不是DOMContentLoaded$(document).ready後面的事件)。

根據下面的MDN文檔,看起來load事件會比DOMContentLoaded事件更符合您的問題要求。

參考:DOMContentLoaded

摘錄:

當文件被完全加載和分析的DOMContentLoaded事件被觸發,而無需等待樣式表,圖片和子框架完成加載(加載事件可以用來檢測滿載頁面)。

+0

$(window)。加載(fn)將是理想的,因爲他的目標是在圖像加載後發生事件,你不覺得嗎? – PeterKA

+0

@ user3558931良好的通話我更新了我的回答,並引用了您的更新信用。謝謝一堆。 – War10ck

0

你必須通過ajax來做到這一點。到你的document.ready運行時,PHP早已不復存在。 PHP在服務器端執行,JS在客戶端執行。嘗試做這樣的事情:

<script> 
(function($) { 
    $.ajax({ 
     type: "POST", 
     url: 'index.php', 
     data: { }, //send data if needed 
     success:function(){ 
      alert("Success!"); 
     } 
    }); 
</script> 

其中url是您的PHP腳本的路徑。您甚至可以在該PHP文件中返回某些內容,並在ajax調用的成功處理程序中對其執行某些操作。

有關AJAX的更多信息,請參閱此處:.ajax()

+0

這是我需要調用$ this-> getChildHtml('content')的函數;謝謝 – Dario

+0

所以在你的php文件中調用該函數並將結果返回給javascript。從那裏你可以隨心所欲地做任何事情。 – hanleyhansen

+0

據我所知,如果我打電話給ajax文件需要包含洞函數,這是來自magento模板的htmlchild的一部分,所以在那部分我需要插入($ this-> getChildHtml('content ');)在文檔準備就緒,但問題是,如果我用這個創建一個PHP文件,內容不加載! – Dario