![](/img/trans.png)
[英]PHP script doesn't wait for Ajax and jQuery document.ready
[英]Run php script on Jquery document ready
我想知道是否只有在文檔准備好時才加載腳本的一部分的方法,我的意思是當所有css,js和圖像都下載后,運行有點沉重的php腳本。
在PHP中,我知道可以在jQuery上使用if else嗎?
可: ?
<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>
任何幫助表示贊賞!
我認為這是一種語言混亂。 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事件,而無需等待樣式表,圖像和子幀完成加載(可以使用load事件來檢測完全加載的頁面)。
您必須通過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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.