【问题标题】:Send JSON data to ASP.NET HTTP Handler将 JSON 数据发送到 ASP.NET HTTP 处理程序
【发布时间】:2015-01-11 15:19:48
【问题描述】:

我正在尝试通过 ajax 将 JSON 数据发送到 HTTP 处理程序,但无法在 Handler 处检索 JSON 数据

这是我发送 json 数据的代码

函数 SendJsonData() {

        var Jsonstring = "[{ AssetName: 'ANA001', AssetNumber: 'ANU001',SerialNumber:'S001',RFIDTag:'R001'},{ AssetName: 'ANA002', AssetNumber: 'ANU002',SerialNumber:'S002',RFIDTag:'R002'},{ AssetName: 'ANA003', AssetNumber: 'ANU003',SerialNumber:'S003',RFIDTag:'R003'}]";

        var myJSON = JSON.stringify(Jsonstring);
        $.ajax({
            async: true,
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            type: "POST",
            data: myJSON ,
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            url: "http://localhost:58275/NFCDataHandlerData.ashx",
            //  url: "http://166.78.189.76:93/NFCDataHandlerData.ashx",                
            success: function (response) {
                alert(response.d);
            }
        });
    }

这是我的句柄代码,我尝试过类似这些方法但没有获取 JSON 数据

 public void ProcessRequest(HttpContext context)
    {
        //context.Response.ContentType = "application/json";
        //var data = context.Request;
        //var sr = new StreamReader(data.InputStream);
        //var stream = sr.ReadToEnd();
        //          var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
        //var jsonObject = serializer.DeserializeObject(stream);

        //string objectdata = jsonObject.ToString();
        //string Jsondata = string.Empty;

        //if (HttpContext.Current.Request["Jsondata"] != null)
        //{
        //    Jsondata = HttpContext.Current.Request["Jsondata"];
        //}

        string json1 = HttpContext.Current.Request.Form["json"];

        string objectdata = string.Empty;

        if (HttpContext.Current.Request["Jsonstring"] != null)
        {
            objectdata = HttpContext.Current.Request["Jsonstring"];
        }

        JavaScriptSerializer json = new JavaScriptSerializer();

        List<NFCAssetData> myObjs = new List<NFCAssetData>();
        myObjs = json.Deserialize<List<NFCAssetData>>(objectdata);

感谢您的帮助。

【问题讨论】:

    标签: asp.net json asp.net-ajax httphandler


    【解决方案1】:

    准备有效数据

    // either from object
    var myJSON = JSON.stringify([{ AssetName: 'ANA001', AssetNumber: 'ANU001'}])
    // or from valid JSON string
    var myJSON = '[{"AssetName":"ANA001","AssetNumber":"ANU001"}]'
    

    您现在拥有的是带有无效 JSON 的 JSON 编码字符串。

    服务器端应该是这样的

    var request = context.Request;
    var requestBody = new StreamReader(request.InputStream, request.ContentEncoding).ReadToEnd();
    var jsonSerializer = new JavaScriptSerializer();
    var data = jsonSerializer.Deserialize<List<NFCAssetData>>(requestBody);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-17
      • 1970-01-01
      • 2018-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-21
      • 1970-01-01
      相关资源
      最近更新 更多