2010-07-12 105 views
2

現在,這個要求可能看起來很奇怪。但我想知道如何實現這一目標?
我有一個HTML文件,它有幾個輸入框,複選框,單選按鈕等。我想保留用戶[其實我]在此頁面上執行的更改。就像用戶勾選了一個複選框,然後下一次打開該文件的任何人都應該看到該複選框爲勾選。如何保存HTML頁面的輸入值?

這個事情可以使用HTTP cookies輕鬆完成。但我不想使用Cookie。
答案可以很簡單的「不,你不能這樣做」 :)

編輯
這與沒有正確措辭的問題的問題。

我想我不能使用數據庫,就好像我將我的HTML頁面發送給某人然後他/她將無法看到我的更改。我希望我的更改也反映在其他系統上。 [多數民衆贊成在我沒有去cookies的原因]。其他解決方案,我在想,是使用FileSystemObject。其他解決方案?再次,答案可能是「不,你不能這樣做」:d

回答

2

你可以在你的表單元素的改變事件綁定到AJAX提交,登錄提交到數據庫,然後在任何頁面加載搶來自數據庫的最新狀態用於渲染。

編輯

如果你想這些變化出現「同時」其他用戶,那麼你可以使用jQuery輪詢來更新頁面 - 在頁面定期輪詢的最新狀態的服務器。

話雖如此,如果你給他們一個服務器鏈接,而不是實際的文件,他們看到你的分貝變化。

然而,這聽起來像你想實際發送文件(不派人到Web服務器),在這種情況下,你可以不喜歡這些方法之一:

  • 你的PHP /任何文件(甚至可以用javascript做到這一點)輸出一個HTML文件與適當的checked="checked",selected="selected",value="blah"等您發送此文件。

  • 你的PHP /任何文件輸出一個靜態參考文件。您的HTML文件具有JavaScript引用和使用存儲在此文件中的值。您可以發送這兩個文件(儘管值更新只需要更改的靜態引用文件)。

+0

我喜歡你的答案,但我想重新框架我的問題:) – 2010-07-12 08:11:21

+0

+1反正..... – 2010-07-12 08:14:28

+0

增加了一個更新,讓我知道如果它的軌道 – 2010-07-12 08:33:03

0

當他或她再次訪問時,您需要一些方法來識別用戶。瀏覽器cookie是有用的,因爲它存儲在用戶的計算機上,該計算機用作標識。另一個嚴肅的選擇是將用戶的偏好存儲在數據庫中。這至少需要服務器端語言。另外,您需要一些方法來識別用戶,例如用戶名,或不太可靠的IP地址。

我聽說HTML5中可能存在其他選項,但我不認爲這些可以在這個時候認真使用。你可以在這裏閱讀Offline Web Applications。在我看來,就像在精神上非常相似的東西,雖然比餅乾更強大。

1

我聽起來像你想用Javascript改變實際的文件 - 這應該是相當困難的。 Javascript是從頭開始設計的一種Web腳本語言,因此它沒有任何內置的文件/ IO功能。

你可以在JavaScript中做什麼是加載ActiveX對象和插件。如何工作取決於你使用的瀏覽器。例如在IE中,你可以加載ActiveX對象(VB編寫的或其他),可以編輯您的文件:

var fileWriter = new ActiveXObject("My.FileWriter"); 
fileWriter.Update("myFile.htm", "inputName", "newValue"); 

你不得不雖然寫你FileWriter效用。

或者,您可以使用HTML5's new data storage stuff - 但您仍然受限於瀏覽器。

+0

'-1'的ActiveX,對不起。 – 2010-07-18 23:45:02

+0

@Delan Azabani - 這有點不公平!我絕不會在一個普通的Web應用程序中推薦ActiveX,但考慮到他正在嘗試做什麼(即在磁盤上的HTML文件中使用Javascript來更改該文件),他沒有多少選項。 – Keith 2010-07-19 12:33:17

+0

夠公平的,我明白你的意思。 :) – 2010-07-20 07:48:42