成功方法不会激活Ajax调用

时间:2013-03-05 09:15:16

标签: javascript asp.net-mvc-3 c#-4.0 jquery

当我在bttn click event doesn't return a data for success method.的代码下面运行时 $('#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; }); 但它适用于控制器方法并返回false(布尔值)作为输出。我需要从javascript代码中选择该布尔值。

为什么它不起作用?

Javascript代码如下:

 [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;
        }

存储库代码如下:

error

更新:

回复如下:

enter image description here

更新2:

屏幕1:

enter image description here

屏幕2:

enter image description here

屏幕3:

enter image description here

如上图所示,我的调试没有成功的方法。 在第二个屏幕之后(当在{{1}}调试时)它进入控制器并带来数据。 第3个屏幕显示从控制器返回后的状态。任何想法?

2 个答案:

答案 0 :(得分:0)

我原以为如果你的返回值仅为false字符串,那么这将成为你的data值,结果是:

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

正如Darin所说,如果你在对象中包装你的响应Json,然后用它来分配你的isClockOutTimeCompleted变量。

如果它是一个真/假的返回类型,我不会认为你想要对你的返回值进行布尔评估,你不想只想将它分配给isClockOutTimeCompleted吗? / p>

答案 1 :(得分: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获取我传入控制器方法的数据..

可能应该更改你的'IsClockOutTimeCompleted'方法,你正在执行linq查询。只需验证你的linq查询一次..还有employeeId你传入控制器的类型是整数然后而不是GUID作为参数为什么不要将参数类型更改为int并查看..

此致