当我在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
更新:
回复如下:
更新2:
屏幕1:
屏幕2:
屏幕3:
如上图所示,我的调试没有成功的方法。 在第二个屏幕之后(当在{{1}}调试时)它进入控制器并带来数据。 第3个屏幕显示从控制器返回后的状态。任何想法?
答案 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并查看..
此致