我有一个来自php脚本的2个echo,它们作为json发送到ajax调用。这2个回声将在2个不同的div中输出。 对于这两个echo,我创建了一个如下数组:
$result = [
"one" => "this is echo 1",
"two" => "this is echo 2"
];
echo json_encode($result);
现在,我要包括2个文件(将是这些回声),而不是这些回声。母猪我能做到吗?
所以我想要的是这样的:
$result = [
"one" => include('success.php'),
"two" => include('renderfiles.php')
];
我该怎么做?
顺便说一下,这是我的jquery ajax:
$.ajax({
url: "",
type: "post",
data: new FormData(this),
dataType: 'json',
contentType: 'application/json',
success: function(data) {
$('.echo').html(data.one); // content ofinclude success.php should come here
$('.table-content').html(data.two); // content of include renderfiles.php should come here
答案 0 :(得分:1)
在包含文件中,您将需要return
HTML-或使用output buffering捕获它,然后返回内容。使用return
...
$result = [
"one" => include('success.php'),
"two" => include('renderfiles.php')
];
因此success.php的内容将类似于
return "<sometag></sometag>";
这可以确保将值传回并插入正确的位置,并给出类似的信息
{"one":"<sometag><\/sometag>","two":...}
如果您只是echo
HTML,则
echo "<sometag></sometag>";
您可能会得到类似
的信息<sometag></sometag>{"one":1,"two":"a"}
答案 1 :(得分:0)
“ one” => include('success.php'),只会将文件的返回值放入数组的“ one”元素中。如果您没有从中返回任何内容,则它将为null。
如果需要输出,则需要使用输出缓冲:
ob_start();
require_once('success.php');
$var = ob_get_clean();
但是我建议您只发送要包含的文件的名称,然后可以使用php将这些包含的内容加载到一个部分中,或者使用ajax发送html内容
希望有帮助