2013-06-21 38 views
1

如何將初始頁面加載期間創建的PHP對象傳遞給ajax調用?將PHP對象傳遞給ajax PHP腳本

create-page.php創建我的頁面並且有一個對象expensiveObject。我需要通過expensiveObjectajax-some-stuff.php。選項1:我應該json_encode()該對象,將它附加到我的URL,使用JavaScript抓住我的URL的一部分,並將它發送回PHP ajax?

選項2:我可以將它作爲$ _SESSION變量存儲嗎?

+2

如果它是一個stdClass /匿名對象,你可以做任何一個,如果它是一個自定義類對象,它在一個會話中,只要確保在會話開始之前需要文件實現類,或者有一個自動加載器在播放。 – Orangepill

+0

@MartyWallace - 在我的ajax腳本中,我有一些方法需要昂貴的對象來處理'$ expensiveObject-> someFunction()'。 –

+0

我明白你的意思了。您不打算將它傳遞給腳本,只需在腳本執行時引用它即可。 – Marty

回答

1

我會將它保存在$_SESSION中,因爲這會阻止您通過互聯網發送數據,而這些數據只能在服務器上處理。會有安全問題以及性能問題。

您可能需要實現取決於你的對象__sleep()__wakeup()$_SESSION

+0

+1關於線路性能的好處以及在發送給客戶端時的安全問題。 – Orangepill

0

保存它時,我想一起去選1,但json_encode功能後,我將再次BASE64_ENCODE因爲json_encode仍不URL把它包 - 安全的字符串。

$ _SESSION方法非常簡單,但取決於您的對象。如果我沒有弄錯,那麼$ _ SESSION的最大數據量可以存儲在那裏。 - 如果你是服務器端會話,你的服務器內存將消耗 - 使用cookie作爲會話替換將限制數據大小

+0

我認爲URL有相似的大小限制。大多數瀏覽器只能通過GET和POST請求處理長達2000個字符的URL我認爲... Base64,json編碼的字符串可能會變得很長 – Jorg