游客
Ajax Post请求ashx无法获取参数值

JS部份:

 /*异步执行后台程序*/
    function AjaxData(d) {
        $.ajax({          
            type: d.type,   
            url: d.url,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: d.data,//Json
            success: function (data) {
                if (typeof (d.callback)) {                    
                    d.callback(true, data)
                }
            },
            error: function (err) {
                if (typeof (d.callback)) {
                    d.callback(false, err.responseText)
                }
            }
        });

    }
    
    调用JS部份:
    
            AjaxData({
                "type": "Post",
                "url": "/API/DataHandler.ashx",
                "data": { "type": "AddCollector", "id": uid,"title":title },
                "callback": RenderAddCollector
            })
            
  ashx后台代码:
  
  public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            string t = context.Request["type"];
            switch (t)
            {
                case "GetCollector":
                    GetCollector(context);
                    break;
                case "AddCollector":
                    AddCollector(context);
                    break;
            }
        }

问题描述:

当请求方式type:"GET"时,string t = context.Request["type"]; 可以正常获取参数值,而采用Post时,得到的值永远是null,开始怀疑Post 方式不支持JSON格式,后尝试将以下两项注释,再测试可正常获取。

contentType: "application/json; charset=utf-8",
dataType: "json",

百度一下得出结论:Post时,request[]不支持JSON,将下面这行删除,则get 、Post 都能支持,验证有效!有待考证具体原因。

contentType: "application/json; charset=utf-8",