4

我很难想出一个聪明的方法来做我需要做的事情。基本上我有一个通用站点,由自定义构建 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->Ajax 请求如何忽略所有 wqrong 标头和 html 垃圾,只使用 JSON。

我对其他方法非常开放,只要contact.php 可以保持完整并且对用户可见,但在CMS 请求信息时发挥双重职责并向CMS 报告。

CMS 和contact.php 将位于不同的服务器上。

感谢您的时间。

4

1 回答 1

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 部分(或其他)。

于 2012-10-24T01:09:30.967 回答