gla*_*con 3 c# asp.net ajax jquery
在从 ApiController 派生的 Controller 内的 Post 方法中,我应该返回什么来指示 jQuery 成功?
我尝试过 HttpResponseMessage 但 jQuery 将此视为错误(即使 jQuery 错误处理程序的参数显然具有 200 状态)。
jQuery 看起来像这样:
processParticipantEvent: function(parID, evtType, evtNotes, successFunction, errorFunction){
debugger;
var requestURL = '/api/participantevent';
var json = {"parId" : parID, "evtType": evtType, "evtNotes": evtNotes};
var jsonArray=JSON.stringify(json);
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: requestURL,
data: jsonArray ,
dataType: "json",
success: function (data) { successFunction(data); },
error: function (data) { errorFunction(data); }
});
},
Run Code Online (Sandbox Code Playgroud)
我读过这个:Ajax 请求返回 200 OK,但是触发了一个错误事件而不是成功,这似乎涉及同一问题,但我怀疑它没有数据,因为它对我不起作用?
需要明确的是,我想做的就是返回一个没有数据的普通旧 2xx。
根据文档:
“json”:将响应评估为 JSON 并返回 JavaScript 对象。跨域“json”请求将转换为“jsonp”,除非请求在其请求选项中包含 jsonp: false。JSON数据经过严格解析;任何格式错误的 JSON 都会被拒绝并引发解析错误。从 jQuery 1.9 开始,空响应也会被拒绝;服务器应该返回 null 或 {} 响应。
因此,如果您想使用 jQuery ajax,则必须返回有效的 json 字符串,只需在 API 控制器中使用以下内容:
return Ok(new {});
请注意,这是一个 jQuery ajax“功能”,例如使用 Angular 来执行 ajax post,我可以return Ok();在控制器中使用,一切都按预期工作。