jQuery的ajax方法传递json数据到Handler.ashx?解决方法
jQuery的ajax方法传递json数据到Handler.ashx?
jQuery的ajax方法把一段json参数值传到Handler.ashx里,在handler.ashx里怎么接收呢?
我后端的handler.ashx代码
jQuery的ajax方法把一段json参数值传到Handler.ashx里,在handler.ashx里怎么接收呢?
function get_org(id) {
var url = "/Handler/AjaxHandler.ashx";
var post_data = { id: id };//就是把这段传到handler.ashx里怎么接收?
$.ajax({
url: url,
type: "POST",
dataType: "json",
data: { action: "CallAjax", asm:"Framework.Web",className:"AjaxDemo", form: [post_data] },//我在这里通过form这个参数传递过去的,但是在接收的时候是个null
success: function (data) {
if (data != null && data != "") {
alert(data);
}
},
error: function (XMLHttpRequest, textStatus) {
alert("异常:" + XMLHttpRequest.reponseText + ";Status:" + textStatus);
}
});
}
我后端的handler.ashx代码
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string message = string.Empty;
string action = context.Request.Form["method"];
string assemblyName = context.Request.Form["asm"];
string className = context.Request.Form["className"];
string param = context.Request.Form["form"];
if (string.IsNullOrEmpty(action))
{
message = "调用方法不能为空!";
}
if (string.IsNullOrEmpty(assemblyName))
{
message += "调用方法的程序集不能为空!";
}
if (string.IsNullOrEmpty(className))
{
message += "调用方法的类名不能为空!";
}
object p = JsonConvert.DeserializeObject(param); //我想在这里把传过来的json转换成一个对象
try
{
Assembly assembly = Assembly.Load(assemblyName);
Type type = assembly.GetType(assemblyName + "." + className);
object o = Activator.CreateInstance(type);
MethodInfo method = type.GetMethod(action);
method.Invoke(o, new object[] { JsonConvert.DeserializeObject(param) });//由于前面的param获取有问题,所以这里的反射调用方法时,没办法传递方法参数