javascript - Razor MVC 5.2.3 如何使用ajax post调用OnFailure

标签 javascript jquery ajax asp.net-mvc razor

我有一个ajax表单,我想在其中调用两个不同的javascript函数,一个用于成功,一个用于失败。在这两次通话中,我 pass data back from the server to the javascript 。请注意以下事项:

我有这样的看法

@using (Ajax.BeginForm("MyAction", null,
new AjaxOptions
{
    HttpMethod = "POST", // HttpPost
    InsertionMode = InsertionMode.Replace, 
    UpdateTargetId = "myDiv", 
    OnSuccess = "callSuccess(data.msg)",
    OnFailure = "callFailure(data.msg)",
}, new { @class = "form-inline" }))
{
   ... // my content
}

我的 Controller 在返回帖子时具有以下逻辑。

    public ActionResult MyAction(string myString)
    {
        ...
        // If error occurred
        return Json(new { success = false, msg= "Fail" });
        ...
        // If no errors
        return Json(new { success = true, msg= "Success" });
    }

无论返回什么,OnSuccess 都是唯一被调用的。调用 OnFailure 的正确方法是什么?

最佳答案

考虑使用 HTTP 状态代码

您可以考虑返回适当的 HTTP status code与您想要通过返回 HttpStatusCodeResult 触发的错误类型(即未经授权、错误请求等)相对应。对象:

// If an error occurred...
if(error)
{
     // Indicate your code and error message. This uses the Bad Request status (400) 
     return new HttpStatusCodeResult(400, "Something went wrong...");
}

处理此客户端

如果您不想这样做,您可以考虑定义一个结果事件(即 OnSuccess = "call(data);),然后在该事件中检查您的 success 属性来确定要做什么:

function call(data){
      if(data.success){
          callSuccess(data.msg);
      }
      else{
          callFailure(data.msg);
      }
}

关于javascript - Razor MVC 5.2.3 如何使用ajax post调用OnFailure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37309260/

相关文章:

javascript - 如何检测 div 的内容何时被卸载?

javascript - TypeError : []. 文件未定义。在 jquery 文件中

PHP 似乎不能很好地处理 XML 字符串?

javascript - 单击按钮时从内容脚本打开选项页面?

php - 如何使用ajax更新表单结构

javascript - 我如何使用 javascript(jQuery ajax whatever)为多个下拉列表设置默认值?

asp.net - 使用 CORS 的跨域图像文件上传问题 - ASP.NET Web API 和 jQuery

javascript - 如何使用 Next.js 和 Rails 后端安全地存储 JWT?

javascript - 使用 JavaScript 修改 Windows 8 的 XML RSS Feed

jquery - jsonpCallback 未调用函数