【问题标题】:PHP website to pass specific information only when queriedPHP网站仅在查询时传递特定信息
【发布时间】:2012-10-24 09:09:30
【问题描述】:

我很难想出一个聪明的方法来做我需要做的事情。基本上我有一个通用站点,由自定义构建 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 将位于不同的服务器上。

感谢您的宝贵时间。

【问题讨论】:

    标签: jquery ajax


    【解决方案1】:

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

    【讨论】:

    • @Sushanth-- 哟呼,谢谢!
    • 感谢 adeneo,这个答案是我倾向于解决的唯一问题,即我只能将其放在 PHP 文件的顶部。是否有任何等价物可以让我把它放在 PHP 文件的中间?在标题和一些 HTML 已经输出之后?这就是挑战。
    • 你可以把那段代码放在任何地方,但是在它之前输出的任何代码也会被发送到ajax函数,除非满足某些条件或什么,然后你不会收到正确的JSON,但是是混合的,你必须用 javascript 来解析它,这比仅仅正确地构建你的 PHP 文件要多得多。
    • 感谢 adeneo,所以我不得不考虑用 java 解析输出并找到它需要的东西。希望有更好的方法,但不得不在 cms 服务器端编写繁重的代码。简单的选项对我有用,但不幸的是,它并不总是我编码客户端站点,我不能让编码客户端破坏一切,因为这是contact.php上的回声
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 1970-01-01
    相关资源
    最近更新 更多