1

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

谁能解释一下如何轻松做到这一点?我考虑过使用 context.Request.Params 但我猜这不是正确的方法..

var array = [];
...

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

2 回答 2

2

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

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

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

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

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

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);
于 2012-12-08T10:24:37.897 回答
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);
于 2012-12-08T10:23:34.420 回答