2011-11-11 26 views
0

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

当前使用情况:

public.cfm calls processing.php?id=69 

随后,处理会做什么它有太多,那么最终:

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

而且web应用程序会拿起它有太多。但是现在我的一个脚本必须发回一个JSON对象而不是简单的变量。我不知道如何完成这件事。我尝试使用cURL做一个帖子,但那是行不通的,因为我需要公众面临coldfusion页接管和curl返回到PHP脚本(我知道我可以呼应curl结果的正文,但这使我在PHP我不想要的脚本域)。有没有办法做到上述标题位置并发送一个对象,因为那就是我需要的 - 停止使用php脚本,并且将Coldfusion页面与对象配合使用。

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

+0

我曾考虑将JSON存储在数据库中,但它可能包含数以千计的项目,这似乎是一个可怕的想法。 – bMon

回答

0

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

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

从CF,做一个<CFHTTP>请求你的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)> 
+0

即使知道我的JSON对象中可能有成千上万的项目?你能提供一些代码吗? – bMon

+0

啊,在这种情况下,没有。你有权修改cf代码吗? json需要作为发布数据(表单范围)发送。这可以通过浏览器完成(在流程中引入一个新页面,其中包含一个带有json值的隐藏字段的表单)或者来自php。如果来自php,你可以在你的位置重定向之前包含一个包含json的cf的调用。尽管如此,这可能会非常棘手,这取决于您需要将json与给定用户的会话保持关联。如果是这样的话,让我知道,我可以详细说明。 –

+0

是的,我可以以任何我想要的方式修改coldfusion页面。我所有的会议管理都是在CF方面完成的。基本上我从CF开始,然后调用php处理网页中的一些用户数据进行正确处理。然后php生成JSON,我必须回到面向公众的CF上。请详细说明。 – bMon