Ajax调用未命中C#代码隐藏中的webmethod

Ajax调用未命中C#代码隐藏中的webmethod,c#,jquery,asp.net,ajax,webmethod,C#,Jquery,Asp.net,Ajax,Webmethod,早上好。 目前,我的ajax调用从JQuery转到C#code behind时遇到了一个问题。成功后,它应该在函数末尾返回真值。我已经尝试删除该类型并将web方法更改为HttpPost头,但我无法做到这一点。下面是一个代码示例 Javascript var jsonFormValues = JSON.stringify(formValues); $.ajax({ type:POST, async: false, url: "Registry

早上好。 目前,我的ajax调用从JQuery转到C#code behind时遇到了一个问题。成功后,它应该在函数末尾返回真值。我已经尝试删除该类型并将web方法更改为HttpPost头,但我无法做到这一点。下面是一个代码示例

Javascript

var jsonFormValues = JSON.stringify(formValues);
    $.ajax({
        type:POST,
        async: false,
        url: "RegistryOpt.aspx/SendOpt",
        data: { jsonFormValues: jsonFormValues },
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (result) {
            onWebMethodSucceeded();
        }
    });
C#

[WebMethod(EnableSession=true)]
公共静态bool SendOpt(字符串jsonFormValues)
{
Assert(!string.IsNullOrEmpty(jsonFormValues));
var fv=Json.Decode(jsonFormValues);
fv.DetectionItems=注册选择格式认证(fv.Detection);
var eb=新电子邮件生成器(fv);
返回true;
}

我认为问题在于您正在格式化为仅JSON的参数值。而不是
var jsonFormValues=JSON.stringify(formValues)
,您也需要对参数本身使用
JSON.stringify

    $.ajax({
        type:POST,
        async: false,
        url: "RegistryOpt.aspx/SendOpt",
        data: JSON.stringify({ jsonFormValues: formValues }),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (result) {
            onWebMethodSucceeded();
        }
    });

怎么了?在浏览器的调试工具中,控制台上是否有任何错误?是否发出HTTP请求?服务器的响应是什么?为什么您的C#方法是静态的?你不是在控制器里吗?旁注:
async:false
是个非常糟糕的主意。(我真的很惊讶浏览器控制台上没有任何警告。)这种行为是非常反打击的行为,浏览器正在积极反对。保持异步代码异步。您是否尝试过
data:JSON.stringify({jsonFormValues:jsonFormValues})
@Miiite页面方法必须是静态的。
    $.ajax({
        type:POST,
        async: false,
        url: "RegistryOpt.aspx/SendOpt",
        data: JSON.stringify({ jsonFormValues: formValues }),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (result) {
            onWebMethodSucceeded();
        }
    });