2009-11-17 53 views
2

我需要在回發後將JavaScript數據傳遞給服務器端。發送JavaScript變量到服務器端ASP .NET


變種jsVariableToPass =新對象();
jsVariableToPass ['key1'] = value1;
jsVariableToPass ['key2'] = value2;
jsVariableToPass ['key3'] = value3;

我想這可以作爲服務器端的Hashtable訪問。這樣做的最好方法是什麼?

我見過的唯一帖子是使用隱藏的輸入。這對我來說似乎有些不可靠,我想知道是否有另一種更可接受的方式來做到這一點。而且,如果這是唯一的方法,那麼反序列化和序列化這個最好的方法是什麼?

回答

2

我想你自己的評論已經回答了你的問題。

您只希望在回發時傳遞值。

瀏覽器和服務器可以通信的唯一方式是通過獲取請求或通過http協議發佈請求。如你所說你只想在回傳後傳遞值,那麼你可以將散列表保存在隱藏的輸入和發佈中,或者你可以用@Zoidberg在他的回答中提到的使用YUI來模擬回發。

我沒有看到使用隱藏輸入或使用YUI或其他JS庫來模擬回發爲較少哈希或更多哈西。

在這兩種方法中,主要思想是與服務器進行通信,而這兩種方式創建的請求可以通過瀏覽器發送到服務器。

,並回答序列化和反序列化

我建議將你的JavaScript數據JSON字符串按本example並傳遞到服務器並使用litjson到JSON數據轉換爲.NET您的其他問題有關的最佳方式對象。

1

由於您使用的是AJAX,因此您可以在較少的Hackey方法中執行此操作。我不知道你正在使用的Ajax庫,但是YUI自己的異步請求的方法提供了一個額外的參數

var postData = YAHOO.util.Connect.setForm(this.formValidator.form); // gets the data in the form 
postData += 'var1=value1&var2=value2'; // appends your new data 
YAHOO.util.Connect.asyncRequest(method, action, scope,postData); // sends the post 

注:範圍必須呼籲在它成功的一個函數來得到響應。

+0

我在我的項目中使用Ajax。但是,我只希望在回發時傳遞值。 – helios456 2009-11-17 19:45:18

1

這裏是寫一個JSON解析器的例子,可以直接讀取到一個Hashtable:

http://techblog.procurios.nl/k/618/news/view/14605/14863/How-do-I-write-my-own-parser-for-JSON.html

你可以很容易地只序列化對象到JSON並將其添加爲一個POST數據(無論是與隱藏的,或使用jQuery或類似的)。

+0

該請求允許訪問查詢變量,如當前的哈希表,這是一個更少的'hackey'解決方案嗎? – Zoidberg 2009-11-17 19:48:57

+0

我如何讀取和寫入POST數據? – helios456 2009-11-17 19:58:11