2012-01-09 19 views
1

我是一名大學生,對網絡編程稍微陌生,最近我「跑進了一堵牆」可以這麼說。即使網頁重新加載,我如何在JavaScript中爲變量保留一個值?

很難解釋我的問題,因爲我不明白所發生的一切,但一位朋友把我介紹給這個網站,我希望這裏的指導將使我朝着正確的方向前進。

這就是我想要做的:創建一個可以通過多個計算機通過網頁訪問的清單,並且可以由每個用戶編輯。

我已經做了:我已經創建了HTML頁面並添加了Javascript。 Javascript與庫存中的物品數量交互,並且用戶可以在收回物品或添加物品時更改特定物品的數量。但是,當頁面重新加載時,數字會返回到其默認值零。

我已經研究過通過JavaScript編輯cookie,但只適用於單臺計算機。與「window.name」同樣的問題。我對數據庫進行了一些調查,然後顫抖着迅速關上了門。如果數據庫是唯一的選擇,那麼有人可以指點我的數據庫初學者教程嗎?

從我的觀點來看,我的主要問題是在網頁上修改Javascript中的變量,然後以某種方式將該變量保存到一個位置的文檔中。這樣,連接到該網絡的每臺計算機都可以訪問這些變量並根據需要進行修改。

我將不勝感激這件事的任何幫助!

+0

可能重複[如何獲取客戶端變量在服務器端的值](http://stackoverflow.com/questions/5417001/),[javascript變量到php](http://stackoverflow.com/問題/ 1515590 /),[從PHP訪問JavaScript變量](http://stackoverflow.com/questions/2338942/),[將JavaScript變量傳遞給Codebehind](http://stackoverflow.com/questions/8639278/) ,[如何在C#中訪問JS變量](http://stackoverflow.com/questions/1465732/) – outis 2012-01-09 19:38:59

+0

... [不同用戶的ASP.NET變量值](http://stackoverflow.com/questions/ 8033452 /),[不同用戶/會話中的php共享變量](http://stackoverflow.com/questions/3475377/) – outis 2012-01-09 19:51:31

+0

請注意,在不同用戶的頁面請求之間共享數據的方法很多,但由於每個客戶端僅通信與服務器,它必須完成服務器端,所以確切的方法可用能夠取決於服務器運行的是[未指定](http://catb.org/~esr/faqs/smart-questions.html#beprecise)。請編輯你的問題這個信息。此外,[示例代碼](http://sscce.org/)通常會有所幫助。另見[寫出完美的問題](http://tinyurl.com/so-hints)。 – outis 2012-01-09 19:55:18

回答

4

從我的角度來看,主要的問題我已經被修改 javascript中的變量在網頁上,然後以某種方式將該變量保存到一個位置的 文檔。通過這種方式,每臺連接到該網絡的計算機都可以訪問這些變量並根據需要進行修改。

那我的朋友是一個數據庫。是的,數據庫就是解決方案。您首先需要了解的有關Web開發的一點是,有兩種:客戶端和服務器端。 Javascript是客戶端開發,這意味着它可以在用戶的​​瀏覽器上運行。你在客戶端有一個變量,但只有客戶端才能看到它。服務器端是不同的。它僅存在於服務器上。您的服務器將「您的頁面(以及來自數據庫的任何內容或任何內容)」提供給客戶端。因此,所有客戶端都可以看到服務器上的任何更改(您想要的)。要編程服務器端,你必須使用除javascript以外的其他語言(你可以使用node.js,但這與客戶端JavaScript完全不同)。其他語言包括PHP,Java,C#等。

因此,您需要查找服務器端腳本。

+0

*嘆*好吧。它是一個數據庫。謝謝您的回答! 我忘了提及我正在使用[Abyss Web Server](http://www.aprelium.com/)作爲庫存頁面的廣播服務器。但是當涉及到服務器端腳本時,我幾乎無所事事。你有什麼建議從哪裏開始? 從我所看到的情況來看,數據庫在由多個用戶編輯時會遇到問題。 – 2012-01-09 19:46:11

+0

@ JacobA.Bridges我感到你的痛苦:P但它絕對值得學習,並且對於任何嚴肅的Web開發都是必要的。祝你好運!哦!如果你遇到任何問題,請不要猶豫,在這裏尋求幫助:) – 2012-01-09 19:48:04

+0

謝謝你的評論和鼓勵。我編輯了我的評論上面,因爲它過早張貼大聲笑。 – 2012-01-09 19:51:32

4

很抱歉告訴你這一點,但要有一個你想要的集中式存儲,你需要一臺服務器。 JavaScript是/仍然是客戶端,所以讓它在同一時間爲多人工作將是不可能的。

爲了這個工作,你需要一個服務器。本地存儲不起作用,因爲不是所有的人都有相同的數據。

+0

目前我正在爲服務器使用[Abyss Web Server](http://www.aprelium.com/)。但就服務器端腳本而言,我擁有豐富的經驗。從哪裏開始有什麼好的想法? – 2012-01-09 19:45:36

+0

查看AJAX的客戶端和服務器端PHP就足夠了。 AWS甚至支持它:http://www.aprelium.com/abyssws/php.html – vanneto 2012-01-09 21:17:57

2

您將需要一個後臺語言,

如PHP,ASP,.NET,Java等

使用,你將能夠使查詢數據庫這個後端的語言,例如mysql數據庫,

我會建議你,因爲他們都可以自由地看看PHP和MySQL:

http://php.nethttp://mysql.com

讓你迅速行動起來,調試不用於生產環境,嘗試WAMP:

http://www.wampserver.com/en/

+0

或[XAMPP](http:// http://www.apachefriends.org/en/xampp.html)。這些「預建」堆棧將爲您提供一個能夠非常快速地託管PHP(以及MySQL等)的網絡服務器。安裝,運行,訪問http:// localhost /並開始播放。 – 2012-01-09 20:35:12

0

您可以避免擁有自己的數據庫,並將庫存數據存儲在Google電子表格等某些雲存儲中。但當然這也需要一些學習。

如果您有一個Google帳戶最簡單的做法是創建一個適合存儲您的廣告資源的電子表格,然後從該電子表格生成一個Web表單。最後,只需將生成的表單嵌入到HTML中,就可以開始使用了。所有庫存變化都會反映在Google文檔的電子表格中。

0

實現共享清單應用有多個部分。在最高級別上,可以將其分解爲在瀏覽器和服務器之間傳輸數據(客戶端 - 服務器通信,它將基於HTTP幷包含諸如AJAX之類的技術)並在請求之間共享數據。前者在SO之前已被許多次直接覆蓋(請參閱頁面右側「鏈接」部分中的鏈接問題)。後者也被覆蓋,但可能並不直接,因此信息是分散的。

兩者的確切設計和實現取決於您可用的服務器端技術。 ASP.Net方法與PHP方法不同,它不同於JSP方法。每種方法都有不同的方式來保持數據的方式可以被多個用戶訪問。一些基本的方法是shared memory,文件和(如你已經提到的)數據庫。

在迴避databases之前,請記住必須執行許多棘手的data related tasks。如果你不使用數據庫,你需要自己實現這些。最後,你會結束實現某種類型的數據庫,其中一個可能具有更少的功能,更多的錯誤,更糟糕的表現,並且需要其他可能在項目上工作的開發人員(一個項目的壽命可能超過您的預期)先學習你的數據存儲系統。

相關問題