2017-07-03 47 views
0

我有一个从提交将发送项目值到ASHX文件使用JSON。我希望这个ASHX文件采用JSON字符串并遍历每个项目。我已经将这些放置在一个包含项目对象的项目对象中。有几篇关于Stack Overflow的文章,描述了如何“反序列化”一个数组并将其添加到自定义类中,但是,我不确定这是如何发生的。你能不能请我描述一下,好像我五岁?使用AJAX发送JSON时,如何从ASHX文件返回JSON属性?

$.ajax({ 
       url: 'addItems.ashx', 
       data: JSON.stringify({items: objectArray }), 
       method: 'POST', 
       dataType: 'JSON', 
       contentType: "application/json; charset=utf-8", 
       success: function (data) { 
        console.log(data.responseText); 
       }, 
       error: function (data) { 
        console.log(data.responseText); 
       } 
      }); 

样品JSON:

{"items":[{"qty":"374","description":"Non repellendus Illum voluptate ea eu tempora eaque maiores quaerat corrupti rerum distinctio Omnis voluptatem","capAsset":"2","iuTag":""},{"qty":"374","description":"Non repellendus Illum voluptate ea eu tempora eaque maiores quaerat corrupti rerum distinctio Omnis voluptatem","capAsset":"2","iuTag":""}]}

ASHX文件:

public class items 
{ 
    public string description { get; set; } 
    public string iuTag { get; set; } 
    public int capAsset { get; set; } 
    public int qty { get; set; } 
} 

public class addItems : IHttpHandler 
{ 

    public void ProcessRequest(HttpContext context) 
    { 
     string connectionString = ConfigurationManager.ConnectionStrings["SurplusConnectionString"].ConnectionString.ToString(); 
     SqlConnection con = new SqlConnection(connectionString); 
     context.Response.ContentType = "application/json";   
     JavaScriptSerializer json_serializer = new JavaScriptSerializer(); 
     string json = new StreamReader(context.Request.InputStream).ReadToEnd(); 
     var items = JsonConvert.DeserializeObject<items>(json);    

    } 
    public bool IsReusable 
    { 
     get 
     { 
      return false; 
     } 
    } 

回答

0

你接近 - 你现在需要做的就是使用您作为参数的HttpContext输出写入到响应:

context.Response.Write(jsonString); 

而且我会添加相应的头文件为好,以表明你正在返回JSON

context.Response.Headers.Add("Content-Type","application/json")); 

语法可能有点关闭,但这就是主意。