在MVC3 中使用jquery ajax 返回的是Json数据类型,那么在前台如何获取该返回的Json数据呢??
JS代码如下:
<script type="text/javascript"> $(function () { $("#login").bind("click", function () { $.ajax({ type: "POST", dataType: "JSON", contentType: "application/JSON", url: "./Index", beforeSend: function () { }, success: function (data) { var obj = eval(data); alert(data.success); } }); }); }); </script>
对应的后台代码如下:
[HttpPost] public ActionResult Index(LogOnModel model) { if (ModelState.IsValid) { var q = db.User.Where(p => p.UserName == model.UserName).Where(p => p.UserPwd == model.UserPwd).Count(); if (q > 0) { return Json(new { success = true, Message = "登錄成功!!" }); } else { return Json(new { success = false, Message = "錯誤的用戶名或密碼" }); } } return View(model); }
后台返回json数据格式
return Json(new {success=true,Message="登錄成功!!"}, JsonRequestBehavior.AllowGet);
前台接受
success: function (data) {
alert(data.success);
}
还是没有返回值,alert(data.success )显示是undefined
@viming:
contentType: 'application/json',
dataType: 'json',
@BirchLee:
浏览器直接输出:
{"success":false,"Message":"錯誤的用戶名或密碼"}
@viming: 示例:前台如下
$.ajax({ url: '/Consult/GetUserInfo?code=' + sqrid, cache: false, dataType: 'json', success: function (data) { $("#SQRXM").val(data.Name); } });
后台如下:
public ActionResult GetUserInfo(string code) { object obj = _commonService.GetUserInfo(code); if (null != obj) { return Json(obj, JsonRequestBehavior.AllowGet); } else { return null; } }
@BirchLee:
呵呵,你这个type:'json'好像不对吧!!应该是dataType:'json'
@viming: 写错了 给你写示例,呵呵。
@viming: 最好系统了解下 $.ajax ,contentType: 'application/json'和
dataType: 'json'传值的时候貌似有差异。
感觉问题较多:
1、接收的参数是一个model,但你调用时好像没传参数
2、调用的路径好像有问题
3、返回的已经是JSON格式,应该可直接用,不用再eval,当然,你可以用开发者工具看看返回的值是什么
1.2点都不是问题,现在问题是前台获取不到后台反回的Json数据!!!
return View(model); 返回的dataType是"text"。
如果想返回Json,需要将先View转换为字符串。
恩 ,在通过验证的情况下,return View(model)是不会执行到的!!
试试
success: function (data) { var obj = eval(data.d); alert(data.d.success); }
返回 html看一下哦。
我在后台获取一个Json,可以转换为一个model吗????