C# .NET(ApiController)/jQuery.ajax:从POST返回什么?
在从ApicController派生的控制器中的Post方法中,我应该返回什么来指示jQuery成功 我尝试了HttpResponseMessage,但jQuery将其视为一个错误(即使jQuery错误处理程序的参数显然具有200状态) jQuery如下所示:C# .NET(ApiController)/jQuery.ajax:从POST返回什么?,c#,jquery,asp.net,ajax,C#,Jquery,Asp.net,Ajax,在从ApicController派生的控制器中的Post方法中,我应该返回什么来指示jQuery成功 我尝试了HttpResponseMessage,但jQuery将其视为一个错误(即使jQuery错误处理程序的参数显然具有200状态) jQuery如下所示: processParticipantEvent: function(parID, evtType, evtNotes, successFunction, errorFunction){ debugger; var requ
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); }
});
},
我读过这样一篇文章:它似乎涉及同一个问题,但我怀疑它没有数据,因为它对我不起作用
我要做的就是返回一个没有数据的普通旧2xx。您的错误在于
请求URL
。它的值是绝对值,http://api/participantevent
不存在。尝试使用相对值
var requestURL = './api/participantevent';
根据:
“json”:将响应评估为json并返回JavaScript
对象跨域“json”请求转换为“jsonp”,除非
请求的请求选项中包含jsonp:false。JSON
严格解析数据;任何格式不正确的JSON都将被拒绝并删除
将抛出一个分析错误从jQuery1.9开始,还需要一个空响应
拒绝;服务器应该返回null或{}响应。
因此,如果要使用jQuery ajax,必须返回有效的json字符串,只需在API控制器中使用以下命令:
返回Ok(新的{})代码>
注意,这是一个jqueryajax“特性”,例如使用Angular来做一篇ajax文章,我可以使用returnok()代码>在我的控制器中,一切都按预期工作。如果您得到一个OK响应,它可能不是一个有效的JSON。
我建议您检查浏览器中的HTTP响应,并尝试使用responseText运行JSON.parse函数,看看它是否失败。正如@Beyers所述,使用OK()返回就可以了
我在这里创建了相同的结构并进行了工作
我的控制器有以下功能:
[Route("api/participantevent")]
public IHttpActionResult Test()
{
return Ok("");
}
在客户端,我更改了您的功能,只是为了简化:
processParticipantEvent= function(){
debugger;
var requestURL = '/api/participantevent';
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: requestURL,
data: [{'test': '1'}] ,
dataType: "json",
success: function (data) { alert('success'); },
error: function (data) { alert('error'); }
});
}
我通常声明一个类,如下所示:
公共类AjaxResult
{
3.您的ajax调用如下所示:
$.ajax({
type: "POST",
dataType: 'json',
url: /ControllerName/Action,
data: { id: "Test"},
success: function (data) { alert('success'); },
error: function (data) { alert('error'); }
});
感谢您的回复,我非常感谢。事实上,URL确实可以解析,因为控制器中的代码实际上是在响应.ajax调用时执行的-只是一旦完成jquery,就会接收我发送的响应(HttpResponseMessage)作为一个错误,因此触发错误处理程序。无论如何,谢谢。如果需要javascript帮助,您也可以在这里发布responseText谢谢-这个答案的好处是它给了我返回类型(IHTTPActionResult)以及使用它的机制。感谢您的回复,我非常感谢。我将@Luiz回复标记为正确,因为它为我提供了更多的信息,但您的回复涵盖了类似的内容,谢谢您的努力。
[HttpPost]
public JsonResult Action(string id)
{
AjaxResult result = new AjaxResult();
//Set the properties of result here...
result.Success = true;
result.messages.Add("Success");
return Json(result);
}
$.ajax({
type: "POST",
dataType: 'json',
url: /ControllerName/Action,
data: { id: "Test"},
success: function (data) { alert('success'); },
error: function (data) { alert('error'); }
});