2015-02-11 79 views
0

我有一個php文件,從目錄中檢索最新的100個圖像。我有一個腳本來自動重新加載php文件,以便我們可以使用JavaScript的數據。在AJAX上加載PHP文件現場加載

但問題是,我們沒有收到有關網站負載的信息,但只有2次重新加載的PHP文件。我們需要其他功能的網站負載數據。

任何人都可以幫助我嗎?

謝謝!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
<script type="text/javascript" src="../js/jquery.js"></script> 
<script> 

var array = []; 

$(document).ready(function() { 

    window.setInterval(function() { 
     $(function() { 
      $.ajax({ 
       type: 'POST', 
       url: 'update.php', 
       cache: false, 
       success: function (result) { 
        array = result; 
       }, 
       dataType: "json" 
      }); 
     }); 
     var index; 
     var text = "<ul>"; 
     for (index = 0; index < array.length; index++) { 
      text += "<li>" + array[index] + "</li>"; 
     } 
     text += "</ul>"; 

     document.getElementById("demo").innerHTML = text; 
    }, 5000); 

}); 
</script> 

</head> 

<body> 
<p id="demo"></p> 
</body> 
</html> 

PHP檔案陣列出口:

echo json_encode($files); 
+0

恩請修復您的縮進,這太難以閱讀。 – 2015-02-11 16:58:00

+0

謝謝,但那條線最終不需要。問題是我需要關於網站負載的數據,但數據在2次重新載入update.php後出現 – user3408380 2015-02-11 17:10:37

+0

您能否給我定義您認爲「網站負載」的含義?因爲數據在頁面加載時可用。這不是全局性的,因爲你忘了將它分配給'array'數組,但是它相信我。請研究JavaScript範圍。 – 2015-02-11 17:37:07

回答

1
var array = []; 
function displayArray(array) { 
    var text = "<ul>"; 
    for (var index = 0; index < array.length; index++) 
    text += "<li>" + array[index] + "</li>"; 
    text += "</ul>"; 
    $("#demo").html(text); 
} 
$(document).ready(function() { 
    array = <? php echo json_encode($files); ?> ; 
    displayArray(array); 
    window.setInterval(function() { 
    $.ajax({ 
     type: 'POST', 
     url: 'update.php', 
     cache: false, 
     success: function(x){ 
     array = x; 
     displayArray(array); 
     }, 
     dataType: "json" 
    }); 
    }, 5000); 
}); 

編輯:我做的陣列全球對你我想這是你弄錯什麼 「負荷」。

+0

謝謝,但問題是,我需要網站加載數據,用於其他目的。顯示數組循環僅用於測試 – user3408380 2015-02-11 17:17:48

+0

,然後只是將該初始數組加載到文檔就緒語句的那一行,它將變爲全局的,我認爲這就是您要求的內容,因爲在此腳本中它已加載現場。 – 2015-02-11 17:32:50

1

使用回調函數,如下面的代碼段。 只有收到響應後,纔會執行ajax請求下的代碼。

這裏的問題是因爲ajax請求是異步的。它在後臺運行,並在ajax請求運行之後運行。

$.ajax({ 
 
type: 'POST', 
 
url: 'update.php', 
 
cache: false, 
 
success: function(result) { 
 
    callbackFunction(result) 
 
}, 
 
dataType:"json" 
 
}); 
 

 
function callbackFunction(array) { 
 
    var index; 
 
    var text = "<ul>"; 
 
    for (index = 0; index < array.length; index++) { 
 
     text += "<li>" + array[index] + "</li>"; 
 
    } 
 
    text += "</ul>"; 
 
    document.getElementById("demo").innerHTML = text; 
 
}

+0

請不要使用異步false,總是編寫非阻塞代碼,利用「success」回調來執行任何需要在執行前返回ajax的代碼。您的代碼可能會嚴重降低瀏覽器的速度,具體取決於通過ajax傳輸的數據量。 – 2015-02-11 17:02:16

+1

我已經更新了上面的代碼。 Thankyou @Dustin Poissant出頭 – 2015-02-11 17:09:40

+0

很好的編輯,很棒的回答&#x1f44d; – 2015-02-11 18:14:58