【问题标题】:Using Ajax to require different php page使用 Ajax 需要不同的 php 页面
【发布时间】:2014-07-29 11:19:39
【问题描述】:

我想使用 jquery ajax 通过需要不同的 php 文件来更改我的 div 元素的内容。

这里是 ajax 代码:

  $.ajax({
         url:"/project/Functions/project_functions.php",
         type:"POST",
         data:{
            functions:num
         },
         success:function(result){
            $("#right_bot").html(result);
         }
      });

project_functions.php 类似于:

 $result = '<?php require "Panels/Project/Main/main.php" ?>';
 echo $result;

我可以看到正在输出的值,但是 html 注释掉了 php 部分

 <!--?php require "Panels/Project/Main/main.php" ?-->

它只是从 php.ini 中提取出来。有没有办法将不同的 php 文件加载到我的 div 中?

ma​​in.php文件中,有php代码,html代码,还有一些style标签。我可以使用 ajax 将所有这些加载到 div 元素中吗?还是我必须回显我所有的 html 代码?

【问题讨论】:

  • 在网络检查器中检查“网络”选项卡时,当您请求 /project/Functions/project_functions.php 时会返回什么?
  • 我使用 dendule 来查看生成的代码。在 #right_bot div 中,它注释掉 /project/Functions/project_functions.php?
  • 放弃变量赋值和回显,只需 &lt;?php require "Panels/Project/Main/main.php" ?&gt; 就是这样
  • 还是把代码注释掉
  • 等等,你真的想显示原始的php代码,例如在你的div中显示php标签等,或者你想显示代码的输出,例如html

标签: javascript php jquery html ajax


【解决方案1】:

你不能那样做。你想要的是所有的PHP都在服务器上执行,只需要返回结果。

您不能将 php 代码发送回 javascript 并尝试在那里运行,PHP 是一种服务器端语言,它只能在服务器上运行。 Javascript 是客户端,它只会在浏览器中运行。
如果您将 &lt;?php echo 123; ?&gt; 发送回 Javascript,您将得到正是的结果,而不是 123。

在您的情况下,解决方案是让 project_functions.php 真正需要它。这将包括 main.php,它的所有功能和输出。

require "Panels/Project/Main/main.php";

一些建议阅读: http://www.codeconquest.com/website/client-side-vs-server-side/


可能对您有所帮助的技巧:将链接粘贴到您的 urlbar,然后将变量添加到其中。您在屏幕上得到的结果就是 Javascript 将输出的结果。注意:这仅适用于 method=get,不适用于 post。

在这种情况下,浏览到 /project/Functions/project_functions.php 并按照我上面的代码执行简单的要求。该输出将被发送到 Javascript。

【讨论】:

  • 如果我确实需要“Panels/Project/Main/main.php”;在 project_functions.php 中。我如何使 main.php 中的所有内容进入我的 div
【解决方案2】:

在ajax请求中发送参数8例如类型):

$.ajax({
         url:"/project/Functions/project_functions.php",
         type:"POST",
         data:{
            functions:num, type: "main"
         },
         success:function(result){
            $("#right_bot").html(result);
         }
      });

然后在php-file中获取类型变量:

       if($type == "main") {
          require "Panels/Project/Main/main.php"
       }
       else {
           require "Panels/Project/Main/sthelse.php"
       }

你还应该有某种相同的函数名或其他东西来输出文件的结果;

<?php 
      function printResult() { }


      echo printResult(); 

【讨论】:

  • 但这不能解决实际问题?
  • 我在 main.php 中有 html 代码和 php 代码,我想将它们全部复制到我的 div 中。这是可能的还是它的设计不好
  • 糟糕,非常糟糕,嘿嘿! main.php 中的代码是什么样的?它有什么作用?其实这是一个简单的问题。这只是一个 if 语句。
  • main.php 的内容在当前情况下无关紧要。主要永远不会以正确的方式包含在内,这就是问题 atm :)
  • w3schools.com/php/php_includes.asp - 您应该调用 require 来包含文件的内容,但从该文件输出任何内容都需要 echo 或 print 语句。
【解决方案3】:

试试:

$result = file_get_contents('Panels/Project/Main/main.php');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 2014-02-21
    相关资源
    最近更新 更多