我需要将值传递给从客户端到服务器端的代码,我该怎么做呢
答案 0 :(得分:0)
数据发送通常需要是一个键值对。我不认为发送字符串会起作用。数据变量通常需要是一个对象数组,每个对象都有两个键:名称和值 我通常有两种方法来做这个
方法1: 此方法将整个数组序列化为一个字符串(类似于您正在尝试的字符串)并将其发送。这样做的一个很大的缺点是,如果数组太长,它会发送一个非常长的字符串,可能超过限制(然后需要从web配置增加限制)。然而,这样做的一大优点是可以直接将对象序列化为c#对象。
方法是将您的行data: JSON.stringify({ arr: values })
更改为data: [{name:"values", value:JSON.stringify(values)}]
,然后访问c#中的值字符串并对其进行反序列化。
在c#中,你需要有这样的代码:
JavaScriptSerializer js = new JavaScriptSerializer();为MyObject object = js.Deserialize(Request.Params(' values'));
您现在可以使用MyObject类型的对象。请注意,为了能够使用它,您需要c#对象和js对象具有完全相同的格式。请注意,在这种情况下,MyObject将是一个数组,因此需要将其替换为以下内容:object = js.Deserialize<string[]>(Request.Params('values'))
方法2:
此方法可以将数组中的每个js项作为单独的项并将其发送。在js代码中,在 $。ajax({行)之前添加var i = 0;
。然后将data: JSON.stringify({ arr: values })
替换为data: values.map(v => ({name: i++, value: v}))
。
现在在您的c#代码中,您可以将数组的每个元素作为Request.Params("0")
,Request.Params("1")
等等进行访问...