代码之家  ›  专栏  ›  技术社区  ›  Rosamunda

PHP可以根据JS中设置的条件动态加载文件吗?

  •  0
  • Rosamunda  · 技术社区  · 3 年前

    我有一个PHP包含,当用户滚动到页面的某个部分时,它想插入到页面上。有可能吗?

    类似于:

    var hasPassedPoint = false;
    
    $(window).scroll(function() {
      var $this = $(this);
    
      if ($this.scrollTop() > 400 && !hasPassedPoint) {
        <?php
          include $_SERVER['DOCUMENT_ROOT'].'/myFile.php';
       ?>    
        hasPassedPoint = true;
      }
    });
    

    我尝试过,但没有成功,也许是因为整个php页面在页面加载时打印出来,而不是在动态达到某个点后打印出来?

    这样的事情还能实现吗?

    0 回复  |  直到 3 年前
        1
  •  0
  •   Zack Heisenberg    3 年前

    你不能在客户端运行php,页面绑定后在客户端运行的唯一东西是Javascript,

    要使用Javascript+PHP实现动态,您最常用XHR或Ajax/axios。。。等, 假设您想在事件发生后在特定元素上显示myFile.php中的数据

    var hasPassedPoint=false;

    $(window).scroll(function() {
      var $this = $(this);
    
      if ($this.scrollTop() > 400 && !hasPassedPoint) {
       axios.get('/myFile.php').then(function (response) {
           // this is the data from myFile in response
    // you display it with 
    document.getElementById('urdiv').innerHtml = response.data
            })
        hasPassedPoint = true;
      }
    });
    
        2
  •  0
  •   tybin    3 年前

    PHP(运行它的服务器)已经完成了对您的网站的解释/编译(取决于PHP的版本和使用的方法) 之前 您(请求该网站的客户端)下载了它,并在本地运行了任何类型的JavaScript/CSS/HTML解析。

    假设下载的HTML与生成它的服务器有任何连接是错误的(除非你明确地建立了连接)。

    如果你想在网站下载后加载动态生成的HTML,例如响应任何JS事件(滚动就是其中之一),你需要请求它。

    检查 this documentation 如何请求文件和 this one 关于如何在对网站进行操作时触发请求。

    然后,一旦下载的网站请求了一个有问题的文件(你的.php),你就可以在服务器端运行它并返回结果。这个过程和连接 由服务器PHP运行 与你的 客户端JS 这是你的工作吗 服务器软件 (例如Apache):它通过暴露一个帮助后端和前端代码通信的接口,在后端和前端之间充当代理)。

    请注意,您使用的代码使用jQuery:使用它和复制教程(越旧越差)会使您面临各种问题。通过jQuery完成的任何事情都可以用普通的JS完成,通常只需要付出最少的努力。