2012-07-09 58 views
3

我有一些加載php腳本輸出到div的ajax。我希望用戶能夠點擊輸出中的鏈接並重寫div,而無需重新加載整個頁面。原則上這可能嗎?試想一下,代碼是這樣:ajax內的php ajax

HTML

<div id="displayhere"></div> 

PHP1輸出

echo '<a href="javascript:void(0);" onclick="reLoad(par1,par2,par3);">ChangeToNew</a>'; 

JS

function reLoad(par1,par2,par3) { 
... 
document.getElementById("displayhere").innerHTML=xmlhttp.responseText; 
xmlhttp.open("GET","php2.php?par1="+par1 etc.,true); 
xmlhttp.send(); 

PHP2

$par1 = $_get['par1']; 
change database 
echo '<a href="javascript:void(0);" onclick="reLoad(par1,par2,par3);">'.$par1.'</a>'; 

原則上可以這樣工作還是有缺陷?

謝謝。

回答

6

你描述的是標準的日常AJAX。 PHP與公式無關; JS只會收到服務器發送的任何內容。恰巧,在你的情況下,服務器響應正在被PHP處理。然而,JS和PHP並不能 - 不能 - 有直接的關係。

所以原理很好。然而,你實際上做了什麼,當然會影響它的工作效果。

需要考慮的事情:

  • 會出現什麼PHP做?這可能會影響加載時間
  • 緩存響應如果適用,那麼PHP不必計算以前生成的內容?
  • UI - 用戶是否會意識到內容正在被抓取?

等等

+0

這絕對可以工作 - 我有一個不同的方法,我在一個有點流量的系統中使用,它的功能就像一個魅力。 – 2012-07-09 16:44:57

+0

由不同的方法,你是指完全不同的東西或這種變化.. – user1260310 2012-07-09 16:46:42

0

我已經習慣了使用jQuery所以會用它給的例子。

如果您創建的鏈接,

<a href="file_to_run.php?par1=1&par2=2&par3=3" id="do_this">Click Me</a> 

然後,您可以編寫代碼作爲

<script> 
    $("#do_this").live('click', function(){ 
    var link_url = $(this).attr('href'); 
    $.ajax({ 
     url: link_url, 
     success: function(data) { 
     $('#displayhere').html(data); 
     } 
    return false; 
}; 
</script> 

如果你使用jQuery,請確保您使用.live( '點擊',功能( ){})方法與.click(function(){})方法相比,否則它將無法識別動態創建的元素。還要確保你做一個返回false。