【问题标题】:Send JSON from php processing to public coldfusion page将 JSON 从 php 处理发送到公共冷融合页面
【发布时间】:2011-11-12 06:09:38
【问题描述】:

我正在修改某人现有的 Coldfusion 网络应用程序。我正在添加 php 处理页面来执行各种任务。到目前为止,我一直在调用 php 页面,并通过 url 传递变量与 Web 应用程序进行交互。

当前使用情况:

public.cfm calls processing.php?id=69

然后处理也将完成它所拥有的,然后最终:

header("Location: $publichome?id=$id&importantstuff=$stuff");
exit();

而且 web 应用程序也将继续使用它。但是现在我的一个脚本必须返回一个 JSON 对象而不是简单的变量。我不知道该怎么做。我尝试使用 cURL 发布帖子,但这不起作用,因为我需要面向公众的coldfusion 页面来接管并且 curl 返回到 php 脚本(我知道我可以回显 curl 结果的正文,但这让我继续使用 php我不想要的脚本域)。有没有办法执行上述标头位置并发送一个对象,因为这就是我需要的 - 停止 php 脚本,并为要使用的对象提供冷融合页面。

我是否必须在 php 中创建某种 JSON 服务,coldfusion 页面将调用检索结果?我也可以随意修改coldfusion页面。

【问题讨论】:

  • 我曾考虑将 JSON 存储在数据库中,但它可能包含数千个项目,所以这似乎是个糟糕的主意。

标签: php json coldfusion


【解决方案1】:

您应该能够将 json 字符串作为 URL 变量传递,就像您通过位置标头传递更简单的字符串一样。如果您还没有这样做,您将需要一些在 php 中对对象进行 json 序列化的方法。可能有一个 json 库可以做到这一点。

编辑 根据更多信息,我现在有一个更好的建议:

从 CF 向您的 PHP 代码发出 请求,将 PHP 所需的任何参数作为 cfhttp 中的参数传递。在 PHP 中,只需将 JSON 作为响应主体“输出”即可。在 CFHTTP 调用返回 CF 后,您将可以通过 cfhttp.fileContent 变量访问 JSON,然后您可以通过 DeserializeJSON 运行该变量以取回真实对象。这里有一些示例 CF 代码:

<cfhttp url="processing.php?id=69" method="get"></cfhttp>
<cfset importantStuff=DeserializeJSON(cfhttp.fileContent)>

【讨论】:

  • 即使知道我的 JSON 对象中可能有数千个项目?你能提供一些代码吗?
  • 啊,那样的话,不行。您是否有权修改 cf 代码? json 需要作为发布数据(表单范围)发送。这可以通过浏览器(在流程中引入一个新页面,该页面包含一个带有 json 值的隐藏字段的表单)或 php.ini 来完成。如果来自 php,您可以在位置重定向之前包含对包含 json 的 cf 的调用。但是,这可能会很棘手,具体取决于您是否需要将 json 与给定用户的会话保持关联。如果是这种情况,请告诉我,我可以详细说明。
  • 是的,我可以随意修改coldfusion页面。我所有的会话管理都是在 CF 端完成的。基本上我从 CF 开始,然后在 url 中调用带有一些用户数据的 php 处理页面以进行正确处理。然后 php 生成 JSON,我必须用该数据返回面向公众的 CF。请详细说明。
  • 您的意思是在 php 中“输出 JSON”,例如: echo $myencodedjson; ??
  • 是的,就像您在直接请求中将 json 返回到浏览器一样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多