2011-11-11 55 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