我有:
if ( isset( $_POST["test"] ) ) {
$html1 = $object->htmlmarkup1();
$html2 = $object->htmlmarkup2();
$json = array("html1" => $html1, "html2" => $html2);
die(json_encode($json));
}
函数基于“测试”POST数据中的一些计算来回显html标记。函数使用echo而不是return,因为我在其他地方使用这些函数,我的代码格式更容易回显函数的结果,而不是先返回结果。
我在不使用函数的情况下通过在两个数组元素中放入“test1”和“test2”来测试它,结果json解码并在我的测试页中正确显示“test1”和“test2”。
答案 0 :(得分:3)
您可以使用输出缓冲。这允许您将输出保存在缓冲区中,而不是将其发送到客户端,然后将其恢复(例如将其存储在变量中)。
请参阅ob_start(),ob_get_clean()以及所有其他相关功能。
// from now on, output is not sent to the client but saved in a buffer
ob_start();
$object->htmlmarkup1();
// get the content of the buffer into $html1 and turn off output buffering
$html1 = ob_get_clean();
ob_start();
$object->htmlmarkup2();
$html2 = ob_get_clean();
$json = array("html1" => $html1, "html2" => $html2);