无法将数据通过JQuery $.ajax传递到ashx处理程序

3
这是我的AJAX代码的一部分:
    $.ajax({
        type: "POST",
        url: "ajax.ashx?method=LoadCities",
        data: "{state_id:'" + state_id + "'}",
        contentType: "application/json;charset=utf-8",
        dataType: "json",
.
.
.

这是我的ASHX处理程序代码的一部分:

public class ajax : IHttpHandler {

    public void ProcessRequest (HttpContext context) {

        context.Response.ContentType = "application/json;charset=utf-8";

        string method = context.Request["method"];
        if (method == "LoadCities")
        {
            object ss = context.Request.Form["state_id"];
            context.Response.Write(LoadCities(ss));
        }
    }

我无法获取 "state_id",它总是为 null。如何才能获得 "state_id" 呢?


你可以在Chrome开发者工具中检查Ajax请求,以查看表单数据是否正确包含?你应该能在“网络”选项卡下看到它的出现。 - rdans
@rdans 我的ajax方法没有问题。但是我无法传递参数并在ASHX中获取其值。 - Mike
你是怎么确定问题不是在ajax请求的一方?你已经检查过了吗? - rdans
@rdans 是的,我已经检查过了。 - Mike
1个回答

5
您可以将其作为查询字符串传递,
$.ajax({
    type: "POST",
    url: "ajax.ashx?method=LoadCities&state_id=" + state_id,
    contentType: "application/json;charset=utf-8",
    dataType: "json",

在你的 .ashx 处理程序中获取你的 state_id,

string lsStateId = System.Convert.ToString(context.Request.QueryString["state_id"]);

1
@Dxterity context.Request["state_id"]context.Request.QueryString["state_id"] 有什么区别? - Mike
1
context.Request 是从您的表单中提交的所有数据(查询字符串、输入控件等)的集合,而 context.Request.QueryString 则是仅包含查询字符串变量的集合。 - Keval Gangani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接