【问题标题】:Ajax call not hitting the webmethod in C# Code BehindAjax 调用未命中 C# 代码隐藏中的 webmethod
【发布时间】:2020-02-11 02:01:36
【问题描述】:

早上好。 目前,我的 ajax 调用从 JQuery 转到后面的 C# 代码时遇到问题。成功后,它应该在函数结束时返回真值。我尝试删除类型并将 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)]
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;
}

【问题讨论】:

  • 错误是什么?在您浏览器的调试工具中,控制台是否有任何错误?是否发出了 HTTP 请求?服务器的响应是什么?
  • 为什么你的 C# 方法是静态的?你不是在控制器或类似的东西中吗?
  • 旁注:async: false 是一个众所周知的坏主意。 (我真的很惊讶浏览器控制台上没有 没有 警告您。)这种行为在很大程度上是一种反模式,并且正在被浏览器积极弃用。保持异步代码异步。
  • 你试过data:JSON.stringify({ jsonFormValues: jsonFormValues })
  • @Miiite 页面方法必须是静态的。

标签: c# jquery asp.net ajax webmethod


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2018-02-16
    • 1970-01-01
    • 2015-08-12
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-07
    • 2020-01-24
    相关资源
    最近更新 更多