Ajax 在 C# Code Behind 中调用没有命中 webmethod

Ajax call not hitting the webmethod in C# Code Behind

早上好。 目前,我的 ajax 调用从 JQuery 转到后面的 C# 代码时遇到问题。成功后它应该 return 函数末尾的真实值。我试过删除类型并将 web 方法更改为 HttpPost header,但我做不到。这是代码示例。

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)]
public static bool SendOpt(string jsonFormValues)
{
    Debug.Assert(!string.IsNullOrEmpty(jsonFormValues));

    var fv = Json.Decode<FormValues>(jsonFormValues);

    fv.attestationItems = RegistryOpt.FormatAttestation(fv.attestation);

    var eb = new EmailBuilder(fv);

    return 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();
        }
    });