【发布时间】:2018-10-15 10:47:10
【问题描述】:
我正在开发一个代码来检查服务器上是否已经存在数据。如果有冲突,那么程序必须返回状态码409。我可以通过ajax.success获取webmethod返回的数据。但是,我无法通过 ajax.statusCode 获取数据。它总是返回错误:
类型错误:数据未定义
我尝试过this,但出现错误
不可调用的成员“内容”不能像方法一样使用
如何通过 ajax.statusCode 获取我的对象?
C#:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static Case CreateNewCase(int id)
{
try
{
Case caseResponse = new Case();
//some process about checking if the ID exists and loading other data
if(idCount > 0)
{
HttpContext.Current.Response.StatusCode = 409;
return caseResponse;
}
else
{
HttpContext.Current.Response.StatusCode = 200;
return caseResponse;
}
}
catch (Exception ex)
{
HttpContext.Current.Response.StatusCode = 500;
return null;
}
}
JS:
function newCase() {
$.ajax({
url: 'Default.aspx/CreateNewCase',
data: JSON.stringify(
{id: ID }
),
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
statusCode: {
409: function (data, response) {
//how do I get the "data" from WebMethod here?
loadCase(ID, data);
//TypeError: data is undefined
}
},
success: function (data, status) {
loadCase(ID, data);
},
error: function (data) {
}
});
}
【问题讨论】:
-
只是出于好奇,您真的需要使用 WebMethod 吗?创建 Web API 或 MVC 控制器是一种选择吗?这会让你的事情变得更容易......
-
@RuiJarimba 是的。这是工作的要求。但老实说,我不知道 Web API 或 MVC(我还是 C# 新手)。
-
我们只是说
.aspx或asmx文件中的[WebMethod]方法是做这种事情的旧方法,应该避免(如果可能的话)。 REST API 的最佳选择是 ASP.NET Web API
标签: javascript c# ajax