2012-07-09 53 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。