2011-01-31 50 views
0

我有我的網站下面的代碼生成內容:Ajax調用不會刷新內部的HTML與PHP的功能,使HTML - 幫助?

<div class="content" id="links"> 
    <?php displayTitle("Links"); ?> 
    <?php displayContent("Links", $isLoggedIn); ?> 
</div> 

內容有一個按鈕,調用JavaScript函數「addLink()」,修改本身。這裏是JavaScript與Ajax調用來改變內容:

function addLink(){ 
    var ajaxRequest; // The variable that makes Ajax possible! 

    if(window.XMLHttpRequest){ 
     ajaxRequest = new XMLHttpRequest(); 
    } 
    else{ 
     ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    ajaxRequest.onreadystatechange = function(){ 
      alert(ajaxRequest.readyState); 
     if(ajaxRequest.readyState == 4){ 
      var ajaxDisplay = document.getElementById('links'); 
      ajaxDisplay.innerHTML = "<?php displayTitle('Links'); ?><?php displayContent('Links', $isLoggedIn); ?>" 
     } 
    } 

    var imgURL = document.getElementById('links_img').value; 
    var linkURL = document.getElementById('links_link').value; 
    var queryString = "?imgURL=" + imgURL + "&linkURL=" + linkURL; 
    ajaxRequest.open("GET", "addLink.php" + queryString, true); 
    ajaxRequest.send(null); 
} 

「addLink.php」增加了東西到表,理論上允許內容功能「displayContent()」,以顯示在表中的新條目( 'displayContent()'查詢表格)。我們不得不刷新頁面以查看更改 我有這樣的問題嗎?可能是因爲在首頁加載頁面時,內部HTML中已經存在PHP調用?

任何幫助表示讚賞,我是一個有點Ajax初學者。

回答

0
ajaxRequest.onreadystatechange = function(){ 
     alert(ajaxRequest.readyState); 
    if(ajaxRequest.readyState == 4){ 
     var ajaxDisplay = document.getElementById('links'); 
     ajaxDisplay.innerHTML = ajaxRequest.responseText; 
    } 
} 

對不起有點更正。你正試圖訪問ajax回調函數中的pre-ajax php腳本。這不是它的工作原理。你希望在ajax調用後收到的數據。 Ajax檢索GET請求的輸出,並存儲在ajaxRequest.responseText中。嘗試替換,然後看看你得到了什麼。

在您的addLink.php中,您應該添加鏈接,然後回顯您希望顯示爲responseText的數據。發生了什麼是你注入數據威盛addLink,但你永遠不會真正顯示在客戶端VIA AJAX正確。但是,當您刷新頁面時,腳本會檢索已注入的內容並相應地顯示它。

+0

非常好,像魅力一樣工作。謝謝kjy112。 – Turner 2011-01-31 15:37:31