Как поймать массив данных в файле Ashx? - PullRequest
1 голос
/ 20 мая 2011

Мой код 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 голосов
/ 21 мая 2011

Как вы его называете, jQuery попытается сериализовать ваш элемент «data» в строку запроса.Я не уверен, что ваш формат данных будет успешно сериализован.Если это так, вы должны иметь возможность посмотреть на объект 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 на сервере.

0 голосов
/ 13 января 2014
$.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"]);

, таким образом вы можете отправить более одного значения в строку запроса и получить значения, используя имя строки запроса, которой вы являетесьотправка.

0 голосов
/ 20 мая 2011

Это интересно, я не сталкивался с этим раньше, и немного забавно, как jQuery справляется с этим.

Я пробовал этот jQuery для проверки прохождения массива:

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

});

Я смог получить массив в .ashx так:

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