Javascript和C#处理程序-带有JSON的AJAX,发送数组
当我使用AJAX(使用JSON)发送一个数组时,我的C#处理程序不知道如何处理整个查询(由于某种原因,查询字符串突然相互结合) 在本例中,我向服务器发送了一个非常简单的数组,服务器说querystring名称为null(但不是null);不使用数组发送任何请求都可以正常工作 请注意,如果有人能解释一下URL上的数组是什么样子的(例如,如果我想通过浏览器发送请求),我将不胜感激 AJAX代码:Javascript和C#处理程序-带有JSON的AJAX,发送数组,c#,javascript,ajax,json,C#,Javascript,Ajax,Json,当我使用AJAX(使用JSON)发送一个数组时,我的C#处理程序不知道如何处理整个查询(由于某种原因,查询字符串突然相互结合) 在本例中,我向服务器发送了一个非常简单的数组,服务器说querystring名称为null(但不是null);不使用数组发送任何请求都可以正常工作 请注意,如果有人能解释一下URL上的数组是什么样子的(例如,如果我想通过浏览器发送请求),我将不胜感激 AJAX代码: function btnClick() { var arr = new Arra
function btnClick() {
var arr = new Array();
arr[0] = "Hey";
arr[1] = "Stackoverflow";
arr[2] = "What's your name?";
var jsonParam = { Name: "test", Pass: "123", Stuff: arr }
$.ajax({
url: "Test.ashx",
type: "get",
data: JSON.stringify(jsonParam),
dataType: "json",
contentType: 'application/json; charset=utf-8',
async:false,
success: function (response) {
alert(response.Name);
}
});
}
处理程序代码:
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "application/json";
JavaScriptSerializer jss = new JavaScriptSerializer();
string res = jss.Serialize(new UserInfo { Name = context.Request.QueryString["Name"], Pass = "pass" + context.Request.QueryString["Pass"], Stuff = new string[] { "1", "2" } });
context.Response.Write(res);
}
您无法从querystring获取json 你可以用这个;您应该从nuget为
JSonConvert
安装NewtonJson
。如果您不想这样做,可以使用JavaScriptSerializer
来代替它
protected object FromJsonToObject(Type t)
{
Context.Request.InputStream.Position = 0;
string json;
using (var reader = new StreamReader(Context.Request.InputStream))
{
json = reader.ReadToEnd();
}
return JsonConvert.DeserializeObject(json, t);
}
在我使用数组之前,我不需要反序列化任何东西。但好吧,我意识到数组现在需要反序列化。谢谢