首页 新闻 赞助 找找看

用json传递bool值

0
悬赏园豆:5 [已解决问题] 解决于 2012-03-21 15:09

这是ajax请求:

 $("form").submit(function () {
var id = $("#EmployeeId").attr("value");
var attendDate = $("#AttendDate").attr("value");
$.post("/Attendance/CheckIn", { id: id, attendDate: attendDate }, function (data) {
alert(data.Data.Value);
});
});

这是action方法:

 

 public JsonResult CheckIn(string id, string attendDate)
{
int employeeId = Convert.ToInt32(id);
DateTime time = Convert.ToDateTime(attendDate);
var attendanceModel =
attendanceRepository.GetMany(
a => a.EmployeeId == employeeId & a.AttendDate.ToShortDateString() == time.ToShortDateString());

var b = attendanceModel.Count() == 0 ? "true" : "false";

JsonResult json = new JsonResult()
{
Data = new { Value = b }
};
return Json(json);
}
问题补充:

好像是写在submit事件中出问题了

我修改了请求:

   function onClick() {
var id = $("#EmployeeId").attr("value");
var attendDate = $("#AttendDate").attr("value");
var v;
$.ajax({
url: '/Attendance/CheckIn',
type: 'POST',
data: { id: id, attendDate: attendDate },
dataType: 'json',
timeout: 2000,
success: function (data) {
v = data.Data.Value;
alert(v);
}
});
alert(v);
return false;

我发现v这个变量先是提示未定义,然后是false.意思是Post请求在好获得结果的时候,js会异步往下执行,咋办啊,我想等待回调啊。

凡一二三的主页 凡一二三 | 初学一级 | 园豆:85
提问于:2012-03-21 13:29
< >
分享
最佳答案
0
{ id: id, attendDate: attendDate }
这好像不是标准的JSON格式啊

未定义是第二个alert弹出来的,ajax里的那个才是返回的值
收获园豆:5
草根程序猿 | 初学一级 |园豆:129 | 2012-03-21 14:58

和c#不一样吗,外面应该也可以获取值啊

凡一二三 | 园豆:85 (初学一级) | 2012-03-21 15:01

@鬼灯水月:

ajax是异步的,在执行到第二个alert时V还没有值呢

草根程序猿 | 园豆:129 (初学一级) | 2012-03-21 15:02

变量是我在ajax外面定义的啊

凡一二三 | 园豆:85 (初学一级) | 2012-03-21 15:02

@鬼灯水月: 

var v;
alert(v);//out undefined

是弹出undefined吗,就是这样的啊,在执行

alert(v);
return false;

时ajax还在执行,还没有返回data

草根程序猿 | 园豆:129 (初学一级) | 2012-03-21 15:05

@菜鸟程序猿: 

找到原因了,ajax请求默认是一般的

$.ajax({
url: '/Attendance/CheckIn',
async: false,
type: 'POST',
data: { id: id, attendDate: attendDate },
dataType: 'json',
timeout: 2000,
success: function (data) {
v = data.Data.Value;
alert(v);
}
});
凡一二三 | 园豆:85 (初学一级) | 2012-03-21 15:08
其他回答(2)
0

为什么一定要用json。。。用文本啊。。ContentResult

为乐而来 | 园豆:1432 (小虾三级) | 2012-03-21 14:13
0
$.ajax({
url: '/Attendance/CheckIn',
async: false,
type: 'POST',
data: { id: id, attendDate: attendDate },
dataType: 'json',
timeout: 2000,
success: function (data) {
v = data.Data.Value;
alert(v);
}
});

 

编辑器加载中...

凡一二三 | 园豆:85 (初学一级) | 2012-03-21 15:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册