我无法想出一个聪明的方法去做我需要做的事情。基本上我有一个通用网站,由自定义构建CMS编辑器创建,一切都很好。我想要发生的是,当用户在我的CMS编辑器中时,通过后台的AJAX请求,它将快速查询用户正在查看的页面,并根据收到的数据返回特殊指令。如:
联系页面有一些CMS的特殊说明,也许所有内容都需要有标题和副标题。因此,这些触发器被编码到contact.php中,但不会显示给查看网站的常规joe。没有领域。
但是当用户在我们的CMS中时,我希望它向http://www.something.com/contact.php发送一个特殊请求,并且contact.php将知道它的CMS敲门,并将回复特殊说明。无论是JSON还是XML,我都不挑剔。
我遇到的真正问题是contact.php显示其自身的版本。我可以返回一个JSON字符串,但jQuery Ajax不知道如何处理它,因为响应中还有其他元素。如果jQuery-> Ajax可以忽略整个页面,只需抓住应该没问题的JSON。
<html>
<body>
<h1>blah blah</h1>
...etc
...etc
<script>var requiredSettings = {[json blah blah blha ]};</script>
<p>loreum ipsum etc..</p>
</body>
</html>
这就是我必须使用的,jQuery-&gt; Ajax请求如何忽略所有wqrong头和html垃圾,只使用JSON。
我对其他方法非常开放,只要contact.php可以保持完整并且用户可见,但是当CMS请求信息时,它会负责并报告回CMS。
CMS和contact.php将位于不同的服务器上。
感谢您的时间。
答案 0 :(得分:5)
在PHP文件中,您可以随时执行:
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
return jsonencode(JSON);
die();
}
HTML site here.
如果使用ajax请求页面,则返回json,如果不是,则返回HTML部分(或其他)。