【问题标题】:php ajax within ajaxajax中的php ajax
【发布时间】:2012-07-09 16:30:02
【问题描述】:

我有一些将 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>';

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

谢谢。

【问题讨论】:

    标签: php javascript ajax


    【解决方案1】:

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

    所以原理没问题。但是,您实际使用它的方式当然会影响它的运行效果。

    需要考虑的事项:

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

    等等

    【讨论】:

    • 这绝对可以工作——而且我有一个不同的方法,我在一个有一点流量的系统中使用它,它就像一个魅力。
    • 通过不同的方法,你的意思是完全不同的东西还是这个的变体..
    【解决方案2】:

    我习惯使用 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(){}) 方法而不是 .click(function(){}) 方法,否则它将无法识别动态创建的元素。还要确保你做一个 return false。

    【讨论】:

      最近更新 更多