Sai*_*udo 22 asp.net-mvc jquery
现在我的ajax发布所有激活他们的错误事件,即使该操作没有导致错误.我有一个ASP.NET MVC操作,看起来像:
[AcceptVerbs(HttpVerbs.Post)]
public virtual ActionResult StuffToDo(int id)
{
// do various things that work ...
return new JsonResult(); // i have to return something, so this...
}
Run Code Online (Sandbox Code Playgroud)
在客户端我有这个jQuery:
$('#actionClick').click(function() {
if (confirm('Are you sure?')) {
$.ajax({
type: "POST",
url: "/Customer/StuffToDo/<%= Model.Customer.Id %>",
contentType: "application/json; charset=utf-8",
data: "{}",
dataType: "json",
success: function() {
ShowSuccessResult("Yay!");
},
error: function(xhr, ajaxOptions, thrownError) {
ShowErrorResult("Boo! Message:" + xhr.responseText);
}
});
}
return false;
});
Run Code Online (Sandbox Code Playgroud)
如果操作成功(没有抛出异常),那么我希望触发成功事件处理程序.相反,错误事件正在触发.有什么东西我应该传回或改变动作,以便成功事件触发?
我意识到这个问题与其他问题基本相同,但我的错误处理程序已经有了扩展的签名,解决了其他人的问题.
编辑 每个请求,这是我得到的响应:
链接到屏幕截图 (不知道如何显示它有问题)
编辑 我将返回值更改为Null以查看是否影响了任何内容,但没有更改行为.
编辑 它的开始看起来这是HTTPS的问题.我从请求中得到了多个回复.前2个是401个消息,然后我得到200个.
48k*_*ocs 37
我相信问题是你没有在JsonResult中返回任何东西.尝试:
return this.Json(string.Empty);
Run Code Online (Sandbox Code Playgroud)
并看看是否有效.我认为问题是你没有返回jQuery调用而不是空JSON集:
{}
Run Code Online (Sandbox Code Playgroud)
Dan*_*tle 17
返回空结果也可能有用
return new EmptyResult();
Run Code Online (Sandbox Code Playgroud)
注意:您的返回类型不需要是ActionResult或从中继承的任何事件.实际上mvc会让你调用任何公共方法.但是,您应该像任何其他方法一样使用您想要的最明确的返回类型(如JsonResult).
Stu*_*tLC 10
对于任何登陆此处的人来说,2个快速笔记都在努力success
从MVC控制器触发ajax jQuery 回调:
type: "GET"
在Ajax中使用,则需要包括JsonRequestBehavior.AllowGet
绕过默认的反JSON劫持安全措施 return Json(true, JsonRequestBehavior.AllowGet);
Run Code Online (Sandbox Code Playgroud)
dataType: 'json'
在Ajax请求中指出,如果你正在进行单向调用(例如Save
)你不需要任何东西,那么你可以Json
从控制器返回任何可序列化的东西.但是200,必须返回一些东西.如果没有返回数据,请使用204.错误 - 触发Ajax error
处理程序!
// Nope - Status 200 must have some content
return new HttpStatusCodeResult(HttpStatusCode.OK);
// Also returns a 200 with no data - not allowed
return new EmptyResult();
Run Code Online (Sandbox Code Playgroud)
Works - 触发Ajax成功处理程序:
// Return a 204 if there's no data
return new HttpStatusCodeResult(HttpStatusCode.NoContent);
// Return something with a 200 return
return Json(new {Success = true});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
25605 次 |
最近记录: |