我想使用jquery ajax通过要求不同的php文件来更改div elemnt的内容。
这里是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。有没有办法将不同的php文件加载到我的div中?
在 main.php 文件中,它有php代码,html代码和一些样式标记。我可以使用ajax将所有这些加载到div元素中吗?或者我必须回复所有的HTML代码?
答案 0 :(得分:1)
你不能这样做。你想要的是所有PHP都在服务器上运行,只有结果必须返回。
你不能将php代码发送回javascript并尝试在那里运行,PHP是一种服务器端语言,它只能在服务器上运行。 Javascript是客户端,它只能在浏览器中运行
如果您将<?php echo 123; ?>
发送回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。
答案 1 :(得分:0)
在ajax请求8中发送参数,例如类型):
$.ajax({
url:"/project/Functions/project_functions.php",
type:"POST",
data:{
functions:num, type: "main"
},
success:function(result){
$("#right_bot").html(result);
}
});
然后在php文件中获取类型变量:
if($type == "main") {
require "Panels/Project/Main/main.php"
}
else {
require "Panels/Project/Main/sthelse.php"
}
您还应该使用某种相同的函数名称来输出文件的结果;
<?php
function printResult() { }
echo printResult();
答案 2 :(得分:-2)
尝试:
$ result = file_get_contents('Panels / Project / Main / main.php');