我的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?
答案 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"]);
通过这种方式,您可以在查询字符串中发送多个值,并使用您要发送的查询字符串的名称获取值。