将javascript变量发送到服务器端ASP .NET

时间:2009-11-17 19:41:24

标签: asp.net javascript serialization

我需要在回发后将javascript数据传递给服务器端。

实施例
    var jsVariableToPass = new Object();
    jsVariableToPass ['key1'] = value1;
    jsVariableToPass ['key2'] = value2;
    jsVariableToPass ['key3'] = value3;

我希望这可以作为服务器端的Hashtable访问。这样做的最佳方式是什么?

我见过的唯一帖子就是使用隐藏的输入。这对我来说似乎有些苛刻,我想知道是否还有另一种更可接受的方法。另外,如果这是唯一的方法,那么反序列化和序列化的最佳方法是什么?

3 个答案:

答案 0 :(得分:2)

我猜您自己的评论已经回答了您的问题。

您只希望在回发时传递值。

浏览器和服务器可以通过http协议通过get request或post请求进行通信的唯一方式。

正如你所说,你只希望在帖子后面传递值,然后你可以将哈希表保存在隐藏的输入和帖子中,或者你可以使用YUI模拟回发,就像@Zoidberg在他的回答中提到的那样。

我没有看到使用隐藏输入或使用YUI或其他JS库来模拟回发,因为不那么hacky或更hacky。

在这两种方法中,主要思想是与服务器进行通信,这是创建请求的两种不同方式,可以通过浏览器发送到服务器。

并回答关于序列化和反序列化的最佳方法的其他问题

我建议您按照此example将javascript数据转换为json字符串,然后将其传递给服务器并使用litjson将json数据转换为.net对象。

答案 1 :(得分:1)

由于您使用的是AJAX,因此可以使用较少的Hackey方法执行此操作。我不确定您使用的是哪个ajax库,但YUI在其ASYNC请求方法上提供了额外的参数

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

注意:Scope必须有一个名为success的函数才能获得响应。

答案 2 :(得分:1)

以下是编写可以直接读入Hashtable的JSON解析器的示例:

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

您可以轻松地将对象序列化为JSON并将其添加为POST数据(使用隐藏,或使用jQuery或类似)。