3

我有一些将 php 脚本输出加载到 div 中的 ajax。我希望用户能够单击输出中的链接并重写 div 而无需重新加载整个页面。这原则上可行吗?想象一下代码看起来像:

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>';

这在原则上可行还是方法有缺陷?

谢谢。

4

2 回答 2

6

您所描述的是标准的日常 AJAX。PHP 与等式无关;JS 将简单地接收服务器发送的任何内容。碰巧的是,在您的情况下,服务器响应正在由 PHP 处理。然而,JS 和 PHP 没有 - 不能 - 有直接关系。

所以原理没问题。但是,您实际上用它做什么当然会影响它的工作情况。

需要考虑的事项:

  • PHP 会做什么?这可能会影响加载时间
  • 缓存响应怎么样,如果这适用的话,那么 PHP 就不必计算它之前生成的东西了?
  • UI - 是否会让用户知道正在获取内容?

等等。

于 2012-07-09T16:43:20.347 回答
0

I'm used to using jQuery so will give examples using it.

If you create your links as

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

You could then write your code as

<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>

If you use jQuery, make sure you use the .live('click', function(){}) method versus the .click(function(){}) method, otherwise it won't recognize dynamically created elements. Also make sure you do a return false.

于 2012-07-09T17:04:21.917 回答