【问题标题】:How to catch an array data in ashx file?如何在 ashx 文件中捕获数组数据?
【发布时间】:2011-05-20 17:10:20
【问题描述】:

我的 AJAX 代码

$.ajax({
                        url: "AnswerHandler.ashx",
                        type: "GET",
                        data: ({ qid: keyArray , name: sName}),
                        async: false,
                        success: function(msg) {
                            if (msg == "success") {
                                alert("answer saved successfully!");
                            }
                            else{
                                alert("answer saving failed!");
                            }
                        }
                    });

现在在 AnswerHandler.ashx 文件中,我通过以下行获取名称数据

string name = context.Request.QueryString["name"];

但是我怎样才能得到一个数组 qid?

【问题讨论】:

  • 在运行时,qid的类型是什么?

标签: .net asp.net ajax ashx


【解决方案1】:

这很有趣,我以前没有遇到过,jQuery 处理它的方式有点有趣。

我试过这个 jQuery 来测试传递一个数组:

var arr = ["val1", "val2", "val3"];
$.ajax({
            url: "ApiPage.aspx",
            data: ({myArr: arr}),
            success: function (data) {
                // do something
            }

});

我能够像这样在 .ashx 中获取数组:

Request.QueryString["myArr[]"].Split(',')

【讨论】:

    【解决方案2】:

    按照您的调用方式,jQuery 将尝试将您的“数据”元素序列化到查询字符串中。我不确定您的数据格式是否会成功序列化。如果是,您应该能够查看 Context.Request.QueryString 对象并弄清楚它是如何格式化的,然后从那里开始。

    另一种方法是:

    $.ajax({
                        url: "AnswerHandler.ashx",
                        type: "POST",
                        processData: false,
                        data: ({ qid: keyArray , name: sName}),
                        async: false,
                        success: function(msg) {
                            if (msg == "success") {
                                alert("answer saved successfully!");
                            }
                            else{
                                alert("answer saving failed!");
                            }
                        }
                    });
    

    processData: false 告诉 jquery 不要序列化您的数据,而是将其“原始”发送到服务器。在您的服务器上,您可以使用 Context.Request.InputStream 读取这些原始字节并反序列化服务器上​​的 json。

    【讨论】:

      【解决方案3】:
      $.ajax({
          url: "AnswerHandler.ashx?qid"+125487,
              type: "GET",
              data: ({ qid: keyArray , name: sName}),
              async: false,
              success: function(msg) {
              if (msg == "success") {
                  alert("answer saved successfully!");
              }
              else {
                  alert("answer saving failed!");
              }
          }
      });
      

      在 ashx 文件中,您可以将值作为

      int attId = Convert.ToInt32(context.Request.QueryString["qid"]);
      

      通过这种方式,您可以在查询字符串中发送多个值,并使用您发送的查询字符串的名称获取值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-24
        • 1970-01-01
        • 1970-01-01
        • 2015-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多