0

当我在下面运行它的代码bttn click eventdoesn't return a data for success method. 它适用于控制器方法并返回 false(布尔值)作为输出。我需要从 javascript 代码中选择该布尔值。

为什么它不起作用?

Javascript代码如下:

 $('#btnClockInTime').off('click').on('click', function () {

                var isClockOutTimeCompleted = true;

                $.ajax({
                    url: "/Employees/IsClockOutTimeCompleted",
                    type: "GET",
                    dataType: "json",
                    cache: false,
                    data: { employeeId: employeeId },
                    success: function (data) {
                        if (!data) {
                            isClockOutTimeCompleted = data;
                        }
                    },
                    error: function (xhr, ajaxOptions, thrownError) {
                        alert(xhr.status);
                        alert(thrownError);
                    }
                });

                return false;
            });

控制器动作方法如下:

 [HttpGet]
 public JsonResult IsClockOutTimeCompleted(Guid employeeId)
        {
            var clockingDate = Convert.ToDateTime(DateTime.Today);

            var isClockOutTimeCompleted = Repository.IsClockOutTimeCompleted(employeeId, clockingDate);

            return Json(isClockOutTimeCompleted, JsonRequestBehavior.AllowGet);
        }

存储库代码如下:

public bool IsClockOutTimeCompleted(Guid employeeId, DateTime clockingDate)
        {
            var clockOutTime = (from c in Catalog.EmployeeClockInOutTimes
                                where (c.Employee.Id == employeeId && c.Created == clockingDate && c.ClockOut == null)
                                select c).FirstOrDefault();

            return clockOutTime == null;
        }

更新 :

响应如下:

在此处输入图像描述

更新 2:

屏幕 1:

在此处输入图像描述

屏幕 2:

在此处输入图像描述

屏幕 3:

在此处输入图像描述

如上图所示,我的调试没有进入成功方法。在第二个屏幕之后(在调试时error)它进入控制器并带来数据。从控制器返回后,第三个屏幕显示状态。知道吗?

4

2 回答 2

0

如果您将数据发布到控制器方法总是使用

'type':'POST' in ur ajax call &
change the [HTTPget] attribute from ur controller method to [httpPost] 

下面是我的示例代码,它工作正常

 $.ajax({
            url: 'Home/temp',
            type: 'POST',
            dataType: "json",
            data: {'name':'surya'},
            success: function (data) {
                console.log(data);
             //here i'm getting the data which i have passed

            },
            error: function () {
                console.log("inside error")
            }
        });

和我的控制器代码

[HttpPost]
        public JsonResult temp(string name) {

            return Json(name);
        }

我正在取回通过我的 jquery ajax 传递给控制器​​方法的数据..

可能您应该更改您正在执行 linq 查询的“IsClockOutTimeCompleted”方法。只需验证您的 linq 查询一次..以及您传递给控制器​​的employeeId 是整数类型,而不是 GUID 作为参数,为什么您不更改参数类型为 int 并查看..

问候

于 2013-05-03T07:33:59.930 回答
0

我原以为如果您的返回值只是false一个字符串,那么它将成为您的data值,结果是:

if (!data) { // won't fire }

正如 Darin 所说,如果您将响应 Json 包装在一个对象中,然后使用它分配给您的isClockOutTimeCompleted变量。

如果返回值是真/假返回类型,我不会想到您想要对返回值执行布尔评估,您不想将其分配给isClockOutTimeCompleted任何一种方式吗?

于 2013-03-05T09:32:09.787 回答