【问题标题】:php load page page into div ,java script not workingphp将页面页面加载到div中,javascript不起作用
【发布时间】:2010-07-21 14:50:38
【问题描述】:

我正在使用 ajax 将页面加载到 div 中 页面加载正常 但我无法运行 php 和 javascript 在那个加载的页面中

在服务器中我正在加载这样的页面

file_get_contents('../' . $PAGE_URL);

在浏览器中,我正在设置 div 的内容 使用

eval("var r = " + response.responseText);

并为该 div 设置 innerHTML 与检索信息 但是当我得到新的内页时 没有 php 或 java 脚本在工作

应该是这样的吗?

【问题讨论】:

  • 当我尝试包含我的页面时,php 给了我一个错误:[Thu Aug 05 15:38:01 2010] [error] [client 10.0.0.2]

    意外输出:\r\n\r\n\r\n\r\n\r\n
  • 你为什么不编辑你的问题并添加你尝试过的代码和错误。

标签: php javascript ajax


【解决方案1】:

我认为 php 无法正常工作,因为您处理它的方式只是文本。我建议使用include('../' . $PAGE_URL); 之类的东西,它应该可以解析 php.ini 文件。 javascript 问题可能与您在 div 中加载 <html> <body> <head> 标记有关我不确定这样做时会发生什么,但它不应该正常工作。尝试使用某种类型的<frame> 标签。

【讨论】:

  • 我删除了所有 html 和 body 标签,并在我的服务器中添加了框架我将 'include' 方法放在 'file_get_contents' 之前,但现在我根本看不到页面
  • 不要使用file_get_contents,只需使用include。但是你为什么不使用frameiframe?使用 javascript 添加元素,然后将其源设置为您需要的任何文件。除非出于某种原因您需要从服务器调用页面,否则这将正常工作。
  • 我在包含我的文件时遇到问题 [Thu Aug 05 15:21:24 2010] [error] [client 10.0.0.2]

    意外输出:\r\n\ r\n\r\n
【解决方案2】:

为了让您的 javascript 正确执行,您必须等到浏览器完成加载页面。

此事件名为onload()。你的代码应该在这个事件上执行。

【讨论】:

    【解决方案3】:
    <?php
        $file = false;
    
        if(isset($_GET['load'] && is_string($_GET['load'])) {
            $tmp = stripclashes($_GET['load']);
            $tmp = str_replace(".","",$tmp);
    
            $file = $tmp . '.php';
        }
    
        if($file != false && file_exists($file) && is_readable($file)) {
            require_once $file;
        }
    
    ?>
    

    通过 file.php?load=test 调用

    即处理PHP文件,只要你简单地从文件中吐出HTML

    target = document.getElementById('page');    
    target.innerHTML = response.responseText;
    

    现在,我相当确定其中的某些部分是不安全的,您可以拥有一个允许要求的白名单。理想情况下,它也应该在特定目录中查找文件。老实说,我也不太确定是否将 responseText 直接转储回 DIV,因为 XSS 已经成熟,所以在安全方面是明智的。但这是一天的结束,我还没有在那个上查找任何内容。请注意,如果不对此进行任何检查,您可能会使用 file_get_contents 将用户定向到第三方站点,这将是一件非常糟糕的事情。您可以在 PHP 中评估 file_get_contents 请求,这...很好,非常非常糟糕。比如试试

    <?php
         echo file_get_contents("http://www.google.com");
    ?>
    

    但我担心我必须在这里问一下,你为什么要这样做?这似乎是实现超链接的一种非常迂回的方式。

    这是为了 AJAX 而使用 AJAX 吗?

    【讨论】:

    • 我在左侧有一个菜单,而不是加载包含菜单的完整 html,我只请求替换内容 div,使用 ajax,我能够像这个函数 getPageContent 一样做到这一点(&$response){ $PAGE_URL = $_POST['PAGE_URL']; ob_start(); require_once('../' . $PAGE_URL ); $contents = ob_get_contents(); ob_end_clean(); $response->fields->frame_main = $contents;但我必须将我的 javascript 与主页分开,有没有办法避免这种情况?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多