Jquery,Ajax,C#:将数组数据传递给服务器端

时间:2012-12-08 10:17:37

标签: c# jquery ajax

我正在尝试做一些事但没有成功。 1.我想通过jquery做一个ajax调用并传递一个数组(我假设它应该在data属性上)。 2.然后,我想在服务器端检索这个数组,但我很失落。

任何人都可以解释一下如何轻松完成这项工作?我想过使用context.Request.Params,但我猜这不是正确的方法..

var array = [];
...

 $.ajax({
      cache: false,
      method: 'json',
      url: 'handler/myhandler.ashx',
      data: array

2 个答案:

答案 0 :(得分:2)

编辑:我刚刚意识到您需要“发布”您的数据。你应该在你的ajax调用中添加“type:'POST'”:)

 $.ajax({
      type: 'POST',
      cache: false,
      method: 'json',
      url: 'handler/myhandler.ashx',
      data: array

你是对的,你的数组应该被插入到ajax调用的“data”属性中。

您可以通过处理程序中的HttpContext访问服务器端的数据。有一个名为request的属性。

为了将对象转换为对象,这是一个deserializsation示例。它被反序列化为字典的地方。

public void ProcessRequest(HttpContext context)
{
    var data = context.Request;
    var sr = new StreamReader(data.InputStream);
    var stream = sr.ReadToEnd();

    var javaScriptSerializer = new JavaScriptSerializer();

    var arrayOfStrings = javaScriptSerializer.Deserialize<string[]>(stream);

答案 1 :(得分:0)

像这样使用JSON.stringify():

 $.ajax({
      cache: false,
      method: 'json',
      url: 'handler/myhandler.ashx',
      data: JSON.stringify(array),
      type: "POST"

将数据发送到服务器端后,您现在需要做的就是反序列化对象,这就是您的操作方法

//might be something else other than Forms["json"], use debug mode to figure out the param
    string json = HttpContext.Current.Request.Forms["json"];
    JavaScriptSerializer  serializer= new JavaScriptSerializer();
    var urObj = serializer.Deserialize<Type>(json);