我一直在尝试从我的服务器传回一个JSON对象中的HTML,我最终设法使其工作。从包含的php文件返回JSON格式的HTML
我现在希望能够从包括文件中传回HTML,但无法解决如何做到这一点....是否有可能?
我的index.html是这样的:
<head>
<script src="ajax.js"></script>
</head>
<body>
<div class="main-content">
<p>Some content to be replaced</p>
</div>
</body>
我的JavaScript调用Ajax如下:
$.ajax({
type: 'POST',
dataType: 'json',
url: 'http://example.com/process.php',
data: formData,
success: function(rtnData) {
$('.main-content').replaceWith(rtnData['html']); // Redraw content
},
error: function(rtnError) {
console.log('there was a problem');
}
});
我process.php文件是在这里:
<?php
$returnVal['html'] = include 'test.php';
echo json_encode($returnVal);
而且最后,我的test.php文件是:
<div class="main-content">
<div id="content">
<p>The simple sum 5 + 4 = <?php echo 5 + 4;?></p>
</div>
</div>
运行时,它在rtnData['html']
中什么也没有返回,我看到控制台日志'有问题'。
如果我改变$returnVal['html'] = include 'test.php';
到file_get_contents('test.php');
它返回的HTML,但PHP返回为文本,而不执行的,所以我的HTML被替换为The simple sum 5 + 4 = <?php echo 5 + 4;?>
,而不是The simple sum 5 + 4 = 9
。
是我想要实现的可能吗?我需要离开test.php作为外部文件;不幸的是,我无法改变这一点。
感谢百万u_muider ....我会试一试,尽快接受你的答案。关于只传回HTML而不是JSON,如果我这样做,传回错误的最佳方法是什么?我会发送一个500内部服务器错误标题以及一些HTML还是有点破解? – Damian
为什么不行,但在500状态的情况下,'error'处理程序将在ajax中调用,而不是'success'。 –
再次感谢您的回答,祝您工作愉快! – Damian