首页 新闻 会员 周边

mvc3 ajax 获取返回的Json数据的问题

0
悬赏园豆:50 [已解决问题] 解决于 2012-07-12 15:10

在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);
}
viming的主页 viming | 初学一级 | 园豆:7
提问于:2012-06-08 09:51
< >
分享
最佳答案
0

后台返回json数据格式

return Json(new {success=true,Message="登錄成功!!"}, JsonRequestBehavior.AllowGet);

前台接受

success: function (data) {
alert(data.success);
}

收获园豆:50
birchlee | 初学一级 |园豆:105 | 2012-06-08 10:03

还是没有返回值,alert(data.success )显示是undefined

viming | 园豆:7 (初学一级) | 2012-06-08 10:14

@viming: 

contentType: 'application/json',
dataType: 'json',

birchlee | 园豆:105 (初学一级) | 2012-06-08 10:19

@BirchLee: 

浏览器直接输出:

{"success":false,"Message":"錯誤的用戶名或密碼"}
viming | 园豆:7 (初学一级) | 2012-06-08 10:26

@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 | 园豆:105 (初学一级) | 2012-06-08 10:31

@BirchLee: 

呵呵,你这个type:'json'好像不对吧!!应该是dataType:'json'

viming | 园豆:7 (初学一级) | 2012-06-08 10:40

@viming: 写错了  给你写示例,呵呵。

birchlee | 园豆:105 (初学一级) | 2012-06-08 10:43

@viming: 最好系统了解下  $.ajax ,contentType: 'application/json'和
dataType: 'json'传值的时候貌似有差异。

birchlee | 园豆:105 (初学一级) | 2012-06-08 10:45
其他回答(5)
0

感觉问题较多:

1、接收的参数是一个model,但你调用时好像没传参数

2、调用的路径好像有问题

3、返回的已经是JSON格式,应该可直接用,不用再eval,当然,你可以用开发者工具看看返回的值是什么

artwl | 园豆:16736 (专家六级) | 2012-06-08 10:05

1.2点都不是问题,现在问题是前台获取不到后台反回的Json数据!!!

支持(0) 反对(0) viming | 园豆:7 (初学一级) | 2012-06-08 10:15
0

return View(model); 返回的dataType是"text"。

如果想返回Json,需要将先View转换为字符串。

参考代码见:ASP.NET MVC - Combine Json result with ViewResult 

dudu | 园豆:30994 (高人七级) | 2012-06-08 10:17

恩 ,在通过验证的情况下,return View(model)是不会执行到的!!

支持(0) 反对(0) viming | 园豆:7 (初学一级) | 2012-06-08 10:28
0

试试

success: function (data) {
                    var obj = eval(data.d);
                    alert(data.d.success);
                }
gunsmoke | 园豆:3592 (老鸟四级) | 2012-06-08 12:32
0

返回 html看一下哦。

無限遐想 | 园豆:3740 (老鸟四级) | 2012-06-08 17:44
0

我在后台获取一个Json,可以转换为一个model吗????

九代乞丐 | 园豆:202 (菜鸟二级) | 2013-04-07 11:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册