如何在ashx文件中捕获数组数据?

时间:2011-05-20 17:10:21

标签: .net asp.net ajax ashx

我的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?

3 个答案:

答案 0 :(得分:0)

这很有意思,我之前没有遇到过这个问题,jQuery处理它的方式有点滑稽。

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

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

});

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

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

答案 1 :(得分:0)

您调用它的方式,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不要序列化你的数据,而是发送它" raw"到服务器。在您的服务器上,您可以使用Context.Request.InputStream来读取这些原始字节并反序列化服务器上​​的json。

答案 2 :(得分:0)

$.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"]);

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