2013-03-05 7 views
0

Когда я бежал ниже кода для bttn click event, он doesn't return a data for success method. Но он идет для метода контроллера и возвращает значение false (логическое значение) как out. Мне нужно выбрать это логическое значение из кода javascript.метод успеха не срабатывает по вызову Ajax

Почему это не работает?

код

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

код Repository, как показано ниже:

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

UPDATE:

отклика, как показано ниже:

enter image description here

ОБНОВЛЕНИЕ 2:

Экран 1:

enter image description here

Экран 2:

enter image description here

экрана 3:

enter image description here

Как было показано выше изображений мой отладки не приходит в метод успеха. После второго экрана (при отладке error) он переходит к контроллеру и приносит данные. Третий экран показывает статус после возвращения с контроллера. Любая идея?

+0

это потому, что вы не выполняете запрос как пост? –

+0

любые ошибки в консоли? – Jai

+0

'if (! Data)' это означает, что проверяемое значение является логическим. Является ли 'data' логическим? – Aashray

ответ

0

я бы подумал, что если вы возвращаемое значение только false как строка то, что станет вашей data значения, и в результате:

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

Как говорит Дарин, если вы заключаете свой ответ Json внутри объекта, а затем использовать его для назначения переменной isClockOutTimeCompleted.

Я бы не подумал, что вы хотите выполнить логическую оценку возвращаемого значения, если это тип true/false return, не хотите ли вы просто назначить его isClockOutTimeCompleted в любом случае?

+0

Неудачная строка '' false ''правильно разбирается с' false'. Поэтому 'if (! Data)' должен срабатывать только отлично. Проблема где-то глубже. – freakish

+0

Я думал больше, что если вы хотите вернуть t/f в отношении тайм-аута с тактовой частотой, вам было бы интересно, если бы он был возвращен t/f? разве вы просто не хотели бы назначать его независимо? – dougajmcdonald

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 ..

Возможно, вы должны изменить метод urClassOutTimeCompleted, где u выполняет запросы linq. Просто подтвердите ur linq-запросы один раз ... и также employeeId, который ур, проходящий в контроллер, имеет тип integer, а вместо GUID в качестве параметра почему это не у изменить тип параметра как междунар и посмотреть ..

с уважением

Смежные вопросы