繁体   English   中英

为什么在将控制权返回给请求时,代码总是 go 到非假部分?

Why does the code always go to the not false part upon returning the control to the request?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有这个调用,它调用 controller 中的一个动作,并期望 object 命名数据中的真或假。

$("#btnReview").click(function () {
    var data = {
        'id': '1',
        'recordID': selectedInspectionId, 'RoleRemarks': $("#CNGInspectionReport_RoleRemarks").val()
    };

    $.post('/CNGInspectionReport/ChangeStatus', data, function (data) {

        if (data == false) {

            alert('Something went wrong');
        }
        else {
            alert('Record reviewed successfully. Kindly review the further records, if any.');
           
        }
    });
});

public ActionResult ChangeStatus(int id, int recordID, string RoleRemarks, string Role = "") // Later, this should be converted to an object instead of parameters
{
    try
    {

        using (UnitOfWork uwork = new UnitOfWork())
        {
            CNGInspectionReportDAL = new CNGInspectionReportDAL();

            User user = (User)Session["User"];

            CNGInspectionReport CNGInspectionReport = uwork.CNGInspectionReportRepository.GetByID(recordID);

            CNGInspectionReport.CNGInspectionReportID = recordID;

            bool statusCrossOffice = false;

            if (id == 1) //Reviewed
            {
                if(user.Office.Trim() != CNGInspectionReport.StationName.Trim())
                {

                    return Json(new { data = statusCrossOffice, message = "Sorry, this record belongs to another office/station and can only be reviewed by the user of the same station/office" });
                }

                CNGInspectionReport.RoleRemarks = RoleRemarks;

                CNGInspectionReport.CheckedBy = user.UserID;
                CNGInspectionReport.CheckedByName = user.UserName;
                CNGInspectionReport.Status = (byte)id;
                CNGInspectionReport.ReviewDate = DateTime.Now;

            }
            return Json(new { data = status, message = "Success" });
        }
    }
    catch (Exception ex)
    {
        ViewBag.Error = ex.Message;
        return Json(new { data = false, message = ex.Message });
    }
}

但问题是当返回到 Ajax 调用时,它仍然会转到 else 块。 为什么? 我已经清楚地返回了数据中的 Fase,但它仍然进入了不是 FALSE 的 else 部分。

1 个回复

您应该评估返回的 object 的数据属性

if (data.data == false) {
         alert('Something went wrong');
}

这是因为data返回值是 object 而不是 boolean。 您可以自己检查该值:

$.post('/CNGInspectionReport/ChangeStatus', data, function (data) {
         alert(JSON.stringify(data));
         // etc
3 为什么scanf在按Enter键时将控制权返回给程序?

我写了以下程序。 我从键盘输入“3”后跟一个TAB。 什么都没发生。 然后,按Enter键。 我打印“3”,程序结束。 如果“ TAB” [水平标签]和“ Enter” [换行符]都是空白字符,为什么它们的行为不同? ...

2015-03-15 06:26:02 2 268   c/ scanf
4 在工作时将控制权返回给用户-Delphi

我在Delphi 2010中编写了一个程序。该程序的一部分处理文件哈希处理,而处理大型文件则需要相当长的时间。 我遇到的问题是,程序不在对用户想要的文件进行哈希处理时,该程序当前在100MB文件上挂起的时间长达60秒。 我希望用户在进行文件哈希处理时能​​够使用程序的其他功能(记事本,字符串 ...

2011-01-11 05:10:01 1 175   delphi
6 未从承诺返回控制权

我正在尝试使用 AWS Cognito 注册用户。 在下面的class ,没有返回registerInCognito的控件。 我也尝试过在失败和成功条件之后添加返回(拒绝和解决承诺是否相同?)。 但没有任何效果。 当我尝试调试时,我发现我评论的部分<---- The control is un ...

7 macos shell 脚本不返回控制

I'm running a Perl script on High Sierra which calls a bash shell script using the 'system' command, but it is not returning control back to the Perl ...

8 WebView不会将控制权返回给应用

我想知道是否有人知道启动网络视图后如何将控制权返回给应用程序? 我从android开发人员页面获得了webview的示例代码,但是在退出webview之后,我一直无法找到将控制权返回给应用的方法。 任何帮助,将不胜感激。 ...

9 Android:控制权返回初始画面

我设计了一个带有启动屏幕的应用程序,该应用程序的sleep()持续3秒钟,并显示我的应用程序的主屏幕。 我可以无缝导航到我的应用程序,然后返回主屏幕后,当按下“返回”按钮时,控件将再次返回到“启动”屏幕,而不是终止应用程序。 请给我一个解决方案。 :) ...

10 void方法何时返回控制权?

我目前遇到一个问题,其中void方法花费太长时间无法将控件返回到调用方法。 从我的登台服务器上的基准测试中,最多需要约0.5秒才能返回。 这段代码实际上已经投入生产很长时间了,但是直到最近才出现这种减速。 过去耗时不到10秒的特定方法调用现在要花费30秒以上才能完成。 如果相关, ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM