【发布时间】: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